diff --git a/Sprint-1/1-key-exercises/1-count.js b/Sprint-1/1-key-exercises/1-count.js index 117bcb2b6..a6d3341bb 100644 --- a/Sprint-1/1-key-exercises/1-count.js +++ b/Sprint-1/1-key-exercises/1-count.js @@ -4,3 +4,5 @@ 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 count by adding 1 to its current value and then assigning that new value back to count. +// the assignemt operator (=) is used to assign the result of the expression (count + 1) back to the variable count, effectively updating its value. \ 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 47561f617..327df44a5 100644 --- a/Sprint-1/1-key-exercises/2-initials.js +++ b/Sprint-1/1-key-exercises/2-initials.js @@ -5,7 +5,8 @@ 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[0].toUpperCase()}${middleName[0].toUpperCase()}${lastName[0].toUpperCase()}`; +console.log(initials); // 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 ab90ebb28..c56665b7f 100644 --- a/Sprint-1/1-key-exercises/3-paths.js +++ b/Sprint-1/1-key-exercises/3-paths.js @@ -17,7 +17,8 @@ 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 lastDotIndex = filePath.lastIndexOf("."); +const ext = filePath.slice(lastDotIndex + 1); // 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 292f83aab..bf9ce1c88 100644 --- a/Sprint-1/1-key-exercises/4-random.js +++ b/Sprint-1/1-key-exercises/4-random.js @@ -7,3 +7,12 @@ 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 + +// breaking down the expressions: +// num is assigned the value of Math.floor(Math.random() * (maximum - minimum + 1)) + minimum +// Math.random() generates a random decimal number between 0 (inclusive) and 1 (exclusive) +// (maximum - minimum + 1) calculates the range of possible values, which is 100 - 1 + 1 = 100 +// Math.random() * (maximum - minimum + 1) scales the random decimal to the range of possible values, resulting in a number between 0 and 100 (exclusive) +// Math.floor() rounds down the scaled random number to the nearest whole number, giving us an integer between 0 and 99 +// Finally, adding minimum (which is 1) shifts the range from 0-99 to 1-100, resulting in num being a random integer between 1 and 100 (inclusive) +console.log(num); diff --git a/Sprint-1/2-mandatory-errors/0.js b/Sprint-1/2-mandatory-errors/0.js index cf6c5039f..7e38ddff4 100644 --- a/Sprint-1/2-mandatory-errors/0.js +++ b/Sprint-1/2-mandatory-errors/0.js @@ -1,2 +1,5 @@ -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? + +// we can use comments to prevent the computer from running these lines of code +// this is a comment and will not be executed by the computer \ 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 7a43cbea7..fe2b776db 100644 --- a/Sprint-1/2-mandatory-errors/1.js +++ b/Sprint-1/2-mandatory-errors/1.js @@ -1,4 +1,5 @@ // trying to create an age variable and then reassign the value by 1 -const age = 33; -age = age + 1; +let age = 33; +age += 1; +console.log(age); diff --git a/Sprint-1/2-mandatory-errors/2.js b/Sprint-1/2-mandatory-errors/2.js index e09b89831..7cf21e15e 100644 --- a/Sprint-1/2-mandatory-errors/2.js +++ b/Sprint-1/2-mandatory-errors/2.js @@ -3,3 +3,5 @@ console.log(`I was born in ${cityOfBirth}`); const cityOfBirth = "Bolton"; + +// The error is that we are trying to use the variable cityOfBirth before it has been declared and assigned a value. In JavaScript, variables declared with let or const are not hoisted, meaning they cannot be accessed before they are declared. To fix this error, we need to declare and assign a value to cityOfBirth before using it in the console.log statement. diff --git a/Sprint-1/2-mandatory-errors/3.js b/Sprint-1/2-mandatory-errors/3.js index ec101884d..808a06cee 100644 --- a/Sprint-1/2-mandatory-errors/3.js +++ b/Sprint-1/2-mandatory-errors/3.js @@ -1,5 +1,6 @@ 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 +8,8 @@ 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 + + +//fixed the code heres why it didnt worked. +// The error is that cardNumber is a number, and the slice method is a string method. We cannot use slice on a number. To fix this, we need to convert cardNumber to a string before using slice. We can do this by using the toString() method or by using template literals. +console.log(last4Digits); \ No newline at end of file diff --git a/Sprint-1/2-mandatory-errors/4.js b/Sprint-1/2-mandatory-errors/4.js index 21dad8c5d..60f596b5c 100644 --- a/Sprint-1/2-mandatory-errors/4.js +++ b/Sprint-1/2-mandatory-errors/4.js @@ -1,2 +1,4 @@ -const 12HourClockTime = "20:53"; -const 24hourClockTime = "08:53"; \ No newline at end of file +const twelveHourClockTime = "20:53"; +const twentyFourHourClockTime = "08:53"; +console.log(twelveHourClockTime); +console.log(twentyFourHourClockTime); \ 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 e24ecb8e1..e342eb0aa 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,19 @@ 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 +// 5 function calls +// replaceAll is called twice on line 4 and line 5 +// Number is called twice on line 4 and line 5 +// console.log is called once on line 7 // 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? +// its coming from line 4 and line 5 because we are trying to call the replaceAll method on a string that contains a comma, which is not a valid number. To fix this problem, we can remove the commas from the strings before converting them to numbers. We can do this by using the replaceAll method to replace all commas with an empty string before calling the Number function. This is already done in the code, so there should be no error when running it. // c) Identify all the lines that are variable reassignment statements +// line 4 and 5 // d) Identify all the lines that are variable declarations +// line 1, 2, 7, 8. // e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression? +// The expression Number(carPrice.replaceAll(",","")) is first calling the replaceAll method on the carPrice string to remove all commas, and then it is converting the resulting string to a number using the Number function. The purpose of this expression is to convert the carPrice string, which may contain commas, into a numeric value that can be used for calculations. \ 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 47d239558..92d4b2202 100644 --- a/Sprint-1/3-mandatory-interpret/2-time-format.js +++ b/Sprint-1/3-mandatory-interpret/2-time-format.js @@ -12,14 +12,20 @@ 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 variable declarations: movieLength, remainingSeconds, totalMinutes, remainingMinutes, totalHours, result // b) How many function calls are there? +// 1 function call: console.log // c) Using documentation, explain what the expression movieLength % 60 represents // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators +// The expression movieLength % 60 calculates the remainder when movieLength is divided by 60. This is used to determine how many seconds are left after accounting for the full minutes in the movie length. For example, if movieLength is 8784 seconds, then 8784 % 60 would give us the number of seconds that do not make up a full minute, which is 24 seconds in this case. // d) Interpret line 4, what does the expression assigned to totalMinutes mean? +// The expression (movieLength - remainingSeconds) / 60 calculates the total number of minutes in the movie length by subtracting the remaining seconds from the total seconds and then dividing by 60. // e) What do you think the variable result represents? Can you think of a better name for this variable? +// The variable result represents the formatted string of the movie length in hours, minutes, and seconds. A better name for this variable could be formattedMovieLength or movieLengthFormatted to make it more descriptive of its purpose. // f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer +// This code will work for all non-negative integer values of movieLength. However, if movieLength is negative, the calculations for remainingSeconds, totalMinutes, remainingMinutes, and totalHours may not produce meaningful results. diff --git a/Sprint-1/3-mandatory-interpret/3-to-pounds.js b/Sprint-1/3-mandatory-interpret/3-to-pounds.js index 60c9ace69..a155415cd 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. const penceStringWithoutTrailingP = penceString.substring(0, penceString.length - 1): creates a new string variable that contains the original string without the last character (the "p"), resulting in "399" +// 3. const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"): pads the string with leading zeros to ensure it has at least 3 characters, resulting in "399" +// 4. const pounds = paddedPenceNumberString.substring(0, paddedPenceNumberString.length - 2): extracts the substring representing the pounds by taking all characters except the last two, resulting in "3" +// 5. const pence = paddedPenceNumberString.substring(paddedPenceNumberString.length - 2).padEnd(2, "0"): extracts the last two characters to represent the pence and pads it with trailing zeros if necessary, resulting in "99" +// 6. console.log(`£${pounds}.${pence}`): outputs the formatted price in pounds and pence, resulting in "£3.99" diff --git a/Sprint-1/4-stretch-explore/chrome.md b/Sprint-1/4-stretch-explore/chrome.md index e7dd5feaf..75b273250 100644 --- a/Sprint-1/4-stretch-explore/chrome.md +++ b/Sprint-1/4-stretch-explore/chrome.md @@ -11,8 +11,15 @@ In the Chrome console, invoke the function `alert` with an input string of `"Hello world!"`; What effect does calling the `alert` function have? +it shows a popup message in the browser. + Now try invoking the function `prompt` with a string input of `"What is your name?"` - store the return value of your call to `prompt` in an variable called `myName`. +Shows a popup in the browser asking the user to type something. +The string "What is your name?" appears as the message in the popup. What effect does calling the `prompt` function have? +Shows a popup dialog in the browser with a message + What is the return value of `prompt`? +If the user types something and clicks OK, returns that string. diff --git a/Sprint-1/4-stretch-explore/objects.md b/Sprint-1/4-stretch-explore/objects.md index 0216dee56..f755e26b2 100644 --- a/Sprint-1/4-stretch-explore/objects.md +++ b/Sprint-1/4-stretch-explore/objects.md @@ -5,12 +5,20 @@ In this activity, we'll explore some additional concepts that you'll encounter i Open the Chrome devtools Console, type in `console.log` and then hit enter What output do you get? +A: This tells you log is a function Now enter just `console` in the Console, what output do you get back? +A: You get an object with multiple properties and functions Try also entering `typeof console` +A: Confirms that console is an object in JavaScript Answer the following questions: What does `console` store? +A: The object that stores logging/debugging functions + What does the syntax `console.log` or `console.assert` mean? In particular, what does the `.` mean? +Access the log function of the console object. +Dot operator . access this property or method of the object. +Access the assert function of the console object. diff --git a/Sprint-2/1-key-errors/0.js b/Sprint-2/1-key-errors/0.js index 653d6f5a0..77edcf343 100644 --- a/Sprint-2/1-key-errors/0.js +++ b/Sprint-2/1-key-errors/0.js @@ -11,3 +11,8 @@ function capitalise(str) { // =============> write your explanation here // =============> write your new code here +//str is being declared twice, once as a parameter and once as a variable inside the function. This causes a syntax error because we cannot redeclare a variable in the same scope. To fix this, we can simply remove the variable declaration and directly return the capitalised string. + +function capitalise(str) { + return `${str[0].toUpperCase()}${str.slice(1)}`; +} \ No newline at end of file