diff --git a/Sprint-1/1-key-exercises/1-count.js b/Sprint-1/1-key-exercises/1-count.js index 117bcb2b6e..f79c6f1216 100644 --- a/Sprint-1/1-key-exercises/1-count.js +++ b/Sprint-1/1-key-exercises/1-count.js @@ -4,3 +4,10 @@ count = count + 1; // Line 1 is a variable declaration, creating the count variable with an initial value of 0 // Describe what line 3 is doing, in particular focus on what = is doing + +// Line 3 is updating the value of the count variable. The = operator is an +// assignment operator, which assigns the value on the right side +// (count + 1) to the variable on the left side (count). In this case, +// it takes the current value of count (which is 0), adds 1 to it, and then +// assigns the result (1) back to count. So after line 3 executes, count will +// have a new value of 1. \ No newline at end of file diff --git a/Sprint-1/1-key-exercises/2-initials.js b/Sprint-1/1-key-exercises/2-initials.js index 47561f6175..edf69a79ff 100644 --- a/Sprint-1/1-key-exercises/2-initials.js +++ b/Sprint-1/1-key-exercises/2-initials.js @@ -5,7 +5,9 @@ let lastName = "Johnson"; // Declare a variable called initials that stores the first character of each string. // This should produce the string "CKJ", but you must not write the characters C, K, or J in the code of your solution. -let initials = ``; +let initials = firstName.charAt(0) + middleName.charAt(0) + lastName.charAt(0); + +console.log(initials); // Output: "CKJ" // https://www.google.com/search?q=get+first+character+of+string+mdn diff --git a/Sprint-1/1-key-exercises/3-paths.js b/Sprint-1/1-key-exercises/3-paths.js index ab90ebb28e..aef461d986 100644 --- a/Sprint-1/1-key-exercises/3-paths.js +++ b/Sprint-1/1-key-exercises/3-paths.js @@ -17,7 +17,9 @@ console.log(`The base part of ${filePath} is ${base}`); // Create a variable to store the dir part of the filePath variable // Create a variable to store the ext part of the variable -const dir = ; -const ext = ; +const dir = filePath.slice(0, lastSlashIndex); +const ext = base.slice(base.lastIndexOf(".") + 1); +console.log(`The dir part of ${filePath} is ${dir}`); +console.log(`The ext part of ${filePath} is ${ext}`); // https://www.google.com/search?q=slice+mdn \ No newline at end of file diff --git a/Sprint-1/1-key-exercises/4-random.js b/Sprint-1/1-key-exercises/4-random.js index 292f83aabb..5e3f25f50b 100644 --- a/Sprint-1/1-key-exercises/4-random.js +++ b/Sprint-1/1-key-exercises/4-random.js @@ -7,3 +7,14 @@ const num = Math.floor(Math.random() * (maximum - minimum + 1)) + minimum; // Try breaking down the expression and using documentation to explain what it means // It will help to think about the order in which expressions are evaluated // Try logging the value of num and running the program several times to build an idea of what the program is doing + +console.log(num); + +// Math.floor()= rounds a number down to the nearest integer +// Math.random() = generates a random float number between 0 and 1 (not including 1) +// Math.random() * 100 = generates a random float number between 0 and 99.999... +// (maximum - minimum + 1) -> scales the range of random numbers to be between the minimum and maximum values (including the maximum value) +// + minimum -> shifts the range of random numbers to start from the minimum value instead of 0 +// So, the expression generates a random integer between the minimum and maximum values (inclusive) +// num = a random integer between 1 and 100 (including 100) + diff --git a/Sprint-1/2-mandatory-errors/0.js b/Sprint-1/2-mandatory-errors/0.js index cf6c5039f7..6a7a7f6908 100644 --- a/Sprint-1/2-mandatory-errors/0.js +++ b/Sprint-1/2-mandatory-errors/0.js @@ -1,2 +1,2 @@ -This is just an instruction for the first activity - but it is just for human consumption -We don't want the computer to run these 2 lines - how can we solve this problem? \ No newline at end of file +// This is just an instruction for the first activity - but it is just for human consumption +// We don't want the computer to run these 2 lines - how can we solve this problem? \ No newline at end of file diff --git a/Sprint-1/2-mandatory-errors/1.js b/Sprint-1/2-mandatory-errors/1.js index 7a43cbea76..031839b47d 100644 --- a/Sprint-1/2-mandatory-errors/1.js +++ b/Sprint-1/2-mandatory-errors/1.js @@ -1,4 +1,4 @@ // trying to create an age variable and then reassign the value by 1 -const age = 33; +let age = 33; age = age + 1; diff --git a/Sprint-1/2-mandatory-errors/2.js b/Sprint-1/2-mandatory-errors/2.js index e09b89831d..c506b10028 100644 --- a/Sprint-1/2-mandatory-errors/2.js +++ b/Sprint-1/2-mandatory-errors/2.js @@ -1,5 +1,7 @@ // Currently trying to print the string "I was born in Bolton" but it isn't working... // what's the error ? -console.log(`I was born in ${cityOfBirth}`); const cityOfBirth = "Bolton"; +console.log(`I was born in ${cityOfBirth}`); + +// cityOfBirth has to be declared as a variable before we can use it in the console.log statement. \ No newline at end of file diff --git a/Sprint-1/2-mandatory-errors/3.js b/Sprint-1/2-mandatory-errors/3.js index ec101884db..ffccdbcb62 100644 --- a/Sprint-1/2-mandatory-errors/3.js +++ b/Sprint-1/2-mandatory-errors/3.js @@ -1,5 +1,5 @@ const cardNumber = 4533787178994213; -const last4Digits = cardNumber.slice(-4); +const last4Digits = cardNumber.toString().slice(-4); // The last4Digits variable should store the last 4 digits of cardNumber // However, the code isn't working @@ -7,3 +7,17 @@ const last4Digits = cardNumber.slice(-4); // Then run the code and see what error it gives. // Consider: Why does it give this error? Is this what I predicted? If not, what's different? // Then try updating the expression last4Digits is assigned to, in order to get the correct value + +// Prediction: I think the code won't work because cardNumber is a number and the +// slice method is for strings. So, it will give an error that slice is not a function. + +// Error: TypeError: cardNumber.slice is not a function +// It was what I predicted. This is because it occurs because cardNumber is a number, +// and numbers do not have the slice method. To fix this, we can convert cardNumber +// to a string before using the slice method. + +// Fix: I converted cardNumber to a string using the toString() method, and then +// I used the slice method to get the last 4 digits. The updated code is above. + +console.log(last4Digits); + diff --git a/Sprint-1/2-mandatory-errors/4.js b/Sprint-1/2-mandatory-errors/4.js index 5f86c730bc..1302d31588 100644 --- a/Sprint-1/2-mandatory-errors/4.js +++ b/Sprint-1/2-mandatory-errors/4.js @@ -1,2 +1,7 @@ -const 12HourClockTime = "8:53pm"; -const 24hourClockTime = "20:53"; +const twelveHourClockTime = "8:53pm"; +const twentyFourHourClockTime = "20:53"; + +// Found out that variable names cannot start with a number in JavaScript. +// To fix this, we can rename the variables to start with a letter or an +// underscore. +// In this instance I spelled out the numbers as words. \ No newline at end of file diff --git a/Sprint-1/3-mandatory-interpret/1-percentage-change.js b/Sprint-1/3-mandatory-interpret/1-percentage-change.js index e24ecb8e18..b48457a644 100644 --- a/Sprint-1/3-mandatory-interpret/1-percentage-change.js +++ b/Sprint-1/3-mandatory-interpret/1-percentage-change.js @@ -2,7 +2,7 @@ let carPrice = "10,000"; let priceAfterOneYear = "8,543"; carPrice = Number(carPrice.replaceAll(",", "")); -priceAfterOneYear = Number(priceAfterOneYear.replaceAll("," "")); +priceAfterOneYear = Number(priceAfterOneYear.replaceAll(",", "")); const priceDifference = carPrice - priceAfterOneYear; const percentageChange = (priceDifference / carPrice) * 100; @@ -12,11 +12,23 @@ console.log(`The percentage change is ${percentageChange}`); // Read the code and then answer the questions below // a) How many function calls are there in this file? Write down all the lines where a function call is made +// Line 4: replaceAll(",", "") and Number() +// Line 5: replaceAll(",", "") and Number() +// Line 10: console.log() // b) Run the code and identify the line where the error is coming from - why is this error occurring? How can you fix this problem? +// Line 5 has a SyntaxError - there is a missing comma between "," and "" in replaceAll(","" should be replaceAll(",", "") // c) Identify all the lines that are variable reassignment statements +// Line 4: carPrice = ... +// Line 5: priceAfterOneYear = ... // d) Identify all the lines that are variable declarations +// Line 1: let carPrice = "10,000" +// Line 2: let priceAfterOneYear = "8,543" +// Line 7: const priceDifference = ... +// Line 8: const percentageChange = .. // e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression? +// replaceAll(",", "") removes all commas from the string e.g. "10,000" becomes "10000" +// Number() then converts that string into an actual number so we can do maths on it \ No newline at end of file diff --git a/Sprint-1/3-mandatory-interpret/2-time-format.js b/Sprint-1/3-mandatory-interpret/2-time-format.js index 47d2395587..61cf6b4ad5 100644 --- a/Sprint-1/3-mandatory-interpret/2-time-format.js +++ b/Sprint-1/3-mandatory-interpret/2-time-format.js @@ -12,14 +12,24 @@ console.log(result); // For the piece of code above, read the code and then answer the following questions // a) How many variable declarations are there in this program? +// 6 -> movieLength, remainingSeconds, totalMinutes, remainingMinutes, totalHours, result // b) How many function calls are there? +// -> console.log() on the last line // c) Using documentation, explain what the expression movieLength % 60 represents // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators +// % is the modulo (remainder) operator. movieLength % 60 gives the leftover seconds +// after dividing by 60. e.g. 8784 / 60 = 146 remainder 24, so remainingSeconds = 24 // d) Interpret line 4, what does the expression assigned to totalMinutes mean? +// movieLength - remainingSeconds gives the total number of seconds that can be divided into whole minutes. +// Dividing this by 60 gives the total number of whole minutes in the movie. e.g. 8784 - 24 = 8760, 8760 / 60 = 146 // e) What do you think the variable result represents? Can you think of a better name for this variable? +// result represents the movie length formatted as hours:minutes:seconds e.g. "2:26:24" +// A better name could be formattedMovieLength or totalFormattedMovieLength // f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer +// It works for any positive whole number of seconds. +// It won't work correctly for negative values or decimals as % behaves unexpectedly with those. \ No newline at end of file diff --git a/Sprint-1/3-mandatory-interpret/3-to-pounds.js b/Sprint-1/3-mandatory-interpret/3-to-pounds.js index 60c9ace69a..5f042fb59f 100644 --- a/Sprint-1/3-mandatory-interpret/3-to-pounds.js +++ b/Sprint-1/3-mandatory-interpret/3-to-pounds.js @@ -25,3 +25,8 @@ console.log(`£${pounds}.${pence}`); // To begin, we can start with // 1. const penceString = "399p": initialises a string variable with the value "399p" +// 2. penceString.substring(0, penceString.length - 1): removes the trailing "p" by taking all characters except the last one -> "399" +// 3. paddedPenceNumberString = "399".padStart(3, "0"): ensures the string is at least 3 characters long, padding with "0" on the left if needed. "399" stays "399" but "5p" would become "005" +// 4. pounds = paddedPenceNumberString.substring(0, length - 2): takes everything except the last 2 digits, giving the pounds part -> "3" +// 5. pence = paddedPenceNumberString.substring(length - 2).padEnd(2, "0"): takes the last 2 digits for the pence -> "99". padEnd ensures it stays 2 digits e.g. "5" would become "50" +// 6. console.log prints the final result combining pounds and pence -> £3.99 \ No newline at end of file