From 51a060d660128b128c6a490420df139d354f872a Mon Sep 17 00:00:00 2001 From: Ebrahim_Moqbel Date: Tue, 24 Feb 2026 01:35:48 +0000 Subject: [PATCH 01/15] explaining line line 3 --- Sprint-1/1-key-exercises/1-count.js | 1 + 1 file changed, 1 insertion(+) diff --git a/Sprint-1/1-key-exercises/1-count.js b/Sprint-1/1-key-exercises/1-count.js index 117bcb2b6e..d56821f584 100644 --- a/Sprint-1/1-key-exercises/1-count.js +++ b/Sprint-1/1-key-exercises/1-count.js @@ -4,3 +4,4 @@ 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 an assignment where = is an assignment operator and in there we are adding value of 1 to the count variable From 795be4362bfc65e8fe90c78800d039dbf96a725b Mon Sep 17 00:00:00 2001 From: Ebrahim_Moqbel Date: Tue, 24 Feb 2026 12:46:01 +0000 Subject: [PATCH 02/15] creating initials from a string --- Sprint-1/1-key-exercises/2-initials.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sprint-1/1-key-exercises/2-initials.js b/Sprint-1/1-key-exercises/2-initials.js index 47561f6175..c5bd88caf3 100644 --- a/Sprint-1/1-key-exercises/2-initials.js +++ b/Sprint-1/1-key-exercises/2-initials.js @@ -6,6 +6,6 @@ let lastName = "Johnson"; // 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 = ``; +console.log(`the initials is ${firstName.charAt(0)}, ${middleName.charAt(0), lastName(0)}`); -// https://www.google.com/search?q=get+first+character+of+string+mdn - +// https://www.google.com/search?q=get+first+character+of+string+mdn \ No newline at end of file From 2b4173bc0ec6f7b4cb0fe688c2b26a2ff25a1b41 Mon Sep 17 00:00:00 2001 From: Ebrahim_Moqbel Date: Wed, 25 Feb 2026 18:04:59 +0000 Subject: [PATCH 03/15] solved the exercises --- Sprint-1/1-key-exercises/1-count.js | 1 + Sprint-1/1-key-exercises/2-initials.js | 2 +- Sprint-1/1-key-exercises/3-paths.js | 9 +++++---- Sprint-1/1-key-exercises/4-random.js | 7 +++++++ Sprint-1/2-mandatory-errors/0.js | 4 ++-- Sprint-1/2-mandatory-errors/1.js | 2 +- Sprint-1/2-mandatory-errors/2.js | 5 ++++- Sprint-1/2-mandatory-errors/3.js | 5 ++++- Sprint-1/2-mandatory-errors/4.js | 4 ++-- 9 files changed, 27 insertions(+), 12 deletions(-) diff --git a/Sprint-1/1-key-exercises/1-count.js b/Sprint-1/1-key-exercises/1-count.js index d56821f584..0d9c8a8807 100644 --- a/Sprint-1/1-key-exercises/1-count.js +++ b/Sprint-1/1-key-exercises/1-count.js @@ -4,4 +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 an assignment where = is an assignment operator and in there we are adding value of 1 to the count variable diff --git a/Sprint-1/1-key-exercises/2-initials.js b/Sprint-1/1-key-exercises/2-initials.js index c5bd88caf3..f6b16b3226 100644 --- a/Sprint-1/1-key-exercises/2-initials.js +++ b/Sprint-1/1-key-exercises/2-initials.js @@ -6,6 +6,6 @@ let lastName = "Johnson"; // 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 = ``; -console.log(`the initials is ${firstName.charAt(0)}, ${middleName.charAt(0), lastName(0)}`); +console.log(`the initials is ${firstName.charAt(0)}, ${middleName.charAt(0), lastName.charAt(0)}`); // https://www.google.com/search?q=get+first+character+of+string+mdn \ No newline at end of file diff --git a/Sprint-1/1-key-exercises/3-paths.js b/Sprint-1/1-key-exercises/3-paths.js index ab90ebb28e..0014c33ed6 100644 --- a/Sprint-1/1-key-exercises/3-paths.js +++ b/Sprint-1/1-key-exercises/3-paths.js @@ -15,9 +15,10 @@ const base = filePath.slice(lastSlashIndex + 1); 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 +// Create a variable to store the ext part of the variable -const dir = ; -const ext = ; +const dir = filePath.slice(0, lastSlashIndex); +const ext = filePath.slice(filePath.lastIndexOf(".")); -// https://www.google.com/search?q=slice+mdn \ No newline at end of file + +// 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..87c0e721df 100644 --- a/Sprint-1/1-key-exercises/4-random.js +++ b/Sprint-1/1-key-exercises/4-random.js @@ -7,3 +7,10 @@ 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 + +// math.floor will make the number as a whole and remove any decimals or more likely to round the the nearest whole number +// math.random will generate a random number from 0 to 1 but not 1 +// (maximum - minimum + 1) provide a range of generated random number +// num is a random whole number between 1 and 100 + +console.log(num); \ No newline at end of file diff --git a/Sprint-1/2-mandatory-errors/0.js b/Sprint-1/2-mandatory-errors/0.js index cf6c5039f7..65ad3030d6 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..8766299661 100644 --- a/Sprint-1/2-mandatory-errors/2.js +++ b/Sprint-1/2-mandatory-errors/2.js @@ -1,5 +1,8 @@ // 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}`); +//const cityOfBirth = "Bolton"; + +// the error is that cityOfBirth varaible declared after the logging command \ 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..01b95531d8 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.slice(-4); // The last4Digits variable should store the last 4 digits of cardNumber // However, the code isn't working @@ -7,3 +7,6 @@ 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 + +// I predicted the last four digits bit it has to be a string in order to use the method slice and that explain why it wasn't working +const last4Digits = cardNumber.toString.slice(-4); \ 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 21dad8c5d1..f0ab94e129 100644 --- a/Sprint-1/2-mandatory-errors/4.js +++ b/Sprint-1/2-mandatory-errors/4.js @@ -1,2 +1,2 @@ -const 12HourClockTime = "20:53"; -const 24hourClockTime = "08:53"; \ No newline at end of file +const twelveHourClockTime = "20:53"; +const twentyFourHourClockTime = "08:53"; \ No newline at end of file From c77e1c30280d8eeee2199118810385b28be23f62 Mon Sep 17 00:00:00 2001 From: Ebrahim_Moqbel Date: Wed, 25 Feb 2026 23:55:46 +0000 Subject: [PATCH 04/15] interpreting the programs --- .../1-percentage-change.js | 18 +++++++++++++++++- .../3-mandatory-interpret/2-time-format.js | 18 +++++++++++++++++- Sprint-1/3-mandatory-interpret/3-to-pounds.js | 18 ++++++++++++++++++ 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/Sprint-1/3-mandatory-interpret/1-percentage-change.js b/Sprint-1/3-mandatory-interpret/1-percentage-change.js index e24ecb8e18..5b036d6c1e 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,27 @@ 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 +//1-carPrice.replaceAll(",", "") in line 4 +//3-number(...) in line 4 - enumerate the first result of replaceAll +//2-priceAfterOneYear.replaceAll("," ,"")) in line 5 +//4-number(...) in line 5 - enumerate the second result of replaceAll +//5-console.log(..) - line 9 + // 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? +// the error is : a syntax error coming from the missing comma in line 5 between the arguments + + // c) Identify all the lines that are variable reassignment statements +// const priceDifference = carPrice - priceAfterOneYear; Line 7 +// const percentageChange = (priceDifference / carPrice) * 100; Line 8 // d) Identify all the lines that are variable declarations +// carPrice = Number(carPrice.replaceAll(",", "")); Line 4 +// priceAfterOneYear = Number(priceAfterOneYear.replaceAll(",", "")); Line 5 // e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression? +// the number function convert the enumerate a string to a number and the method replaceAll replace ever comma with a space +// the purpose is to clean the value so that it can be converted to a proper number using Number(). + diff --git a/Sprint-1/3-mandatory-interpret/2-time-format.js b/Sprint-1/3-mandatory-interpret/2-time-format.js index 47d2395587..b993fcd035 100644 --- a/Sprint-1/3-mandatory-interpret/2-time-format.js +++ b/Sprint-1/3-mandatory-interpret/2-time-format.js @@ -1,4 +1,5 @@ -const movieLength = 8784; // length of movie in seconds + +const movieLength = -8789; // length of movie in seconds const remainingSeconds = movieLength % 60; const totalMinutes = (movieLength - remainingSeconds) / 60; @@ -12,14 +13,29 @@ 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? +// There are 5 variable declarations // b) How many function calls are there? +// There are 4 function calls in line 9 and 10 // c) Using documentation, explain what the expression movieLength % 60 represents // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators +// % is a modulo operator that return the remainder of a multiplied number // d) Interpret line 4, what does the expression assigned to totalMinutes mean? +// movieLength subtract the left over seconds from the total seconds(movieLength) to get a number that is divisible by 60 +// when dividing by 60 would convert the remaining seconds into whole minutes which ensures there is no decimal in totalMinutes + // e) What do you think the variable result represents? Can you think of a better name for this variable? +// results present length of movie formatted as Hours:Minutes:Seconds and a better name could be movieDuration + // f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer + +// whole positive value: for the 8789 seconds the formatted duration would be fine 2:26:29 and the code would be working as expected +// under 60 seconds: 59 seconds would assign the hours and minutes both as 0s resulting 0:0:59 instead of the normal formatted way 00:00:59 but still correct +// zero value: the formatted duration would also be correct 0:0:0 even though it is an unusual value it still show that it can handle it +// Negative value: for the -8789 seconds would give us an output of -2:-26:-29 which is not a valid format and doesn't make any sense +// the logic breaks where we need to give the user a message to enter a valid number +// diff --git a/Sprint-1/3-mandatory-interpret/3-to-pounds.js b/Sprint-1/3-mandatory-interpret/3-to-pounds.js index 60c9ace69a..08fad0d5f9 100644 --- a/Sprint-1/3-mandatory-interpret/3-to-pounds.js +++ b/Sprint-1/3-mandatory-interpret/3-to-pounds.js @@ -23,5 +23,23 @@ console.log(`£${pounds}.${pence}`); // You need to do a step-by-step breakdown of each line in this program // Try and describe the purpose / rationale behind each step + // 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); reassigned a new value +// using the method substring starting form the index 0 ="3" and ending with -1 exclusively meaning doesn't include 'p' +// resulting with a numeric part of the price which is '399' + +//3.const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"); +// ensure the number in a 3 digits format by adding zeros minding the consistency of the formatting. + +//4.const pounds = paddedPenceNumberString.substring(0,paddedPenceNumberString.length - 2); +//extracts everything except the last two number to form the pound portion of the price + +//5.const pence = paddedPenceNumberString.substring(paddedPenceNumberString.length - 2).padEnd(2, "0"); +//extracts the last two digits to form the pence portion of the price and the padEnd method ensure the number in a two digits format consistent + +//6.console.log(`£${pounds}.${pence}`); +//Combines everything into the final formatted price string. Result: £3.99 +//basically the program will take the string "399p" and print out a string of "£3.99" \ No newline at end of file From e829acff86c65d913ef5a54cdc0f5bc8abdd1508 Mon Sep 17 00:00:00 2001 From: Ebrahim_Moqbel Date: Thu, 26 Feb 2026 00:22:36 +0000 Subject: [PATCH 05/15] explored console in the developer tools and answered some Qs --- Sprint-1/4-stretch-explore/chrome.md | 5 ++++- Sprint-1/4-stretch-explore/objects.md | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Sprint-1/4-stretch-explore/chrome.md b/Sprint-1/4-stretch-explore/chrome.md index e7dd5feafe..f635079c6d 100644 --- a/Sprint-1/4-stretch-explore/chrome.md +++ b/Sprint-1/4-stretch-explore/chrome.md @@ -11,8 +11,11 @@ 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 message on the middle top of the page with a sting "Hello world!" 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`. What effect does calling the `prompt` function have? -What is the return value of `prompt`? +It shows a pop up box message with the sting "What is your name?" as an input in the middle top of the page +What is the return value of `prompt`? +it returns the text the user enters or an empty string if enter nothing in case cancel would return null diff --git a/Sprint-1/4-stretch-explore/objects.md b/Sprint-1/4-stretch-explore/objects.md index 0216dee56a..0da365f997 100644 --- a/Sprint-1/4-stretch-explore/objects.md +++ b/Sprint-1/4-stretch-explore/objects.md @@ -5,12 +5,16 @@ 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? +log() { [native code] } Now enter just `console` in the Console, what output do you get back? +console {debug: ƒ, error: ƒ, info: ƒ, log: ƒ, warn: ƒ, …} Try also entering `typeof console` Answer the following questions: What does `console` store? +The console stores the history of messages your code prints while it runs What does the syntax `console.log` or `console.assert` mean? In particular, what does the `.` mean? +"." is called a dot notation where we can get access sth that belong to an object and the syntax means that we are accessing the methods that belong to the object console. \ No newline at end of file From 14fee9ab69336b64ae3a77968f293bfeac142e02 Mon Sep 17 00:00:00 2001 From: Ebrahim_Moqbel Date: Thu, 26 Feb 2026 21:31:55 +0000 Subject: [PATCH 06/15] answered the exercises of the key errors and debug the mandatory file --- Sprint-2/1-key-errors/0.js | 26 ++++++++++++++++---- Sprint-2/1-key-errors/1.js | 29 ++++++++++++++++------ Sprint-2/1-key-errors/2.js | 12 +++++++--- Sprint-2/2-mandatory-debug/0.js | 17 +++++++++---- Sprint-2/2-mandatory-debug/1.js | 20 +++++++++++----- Sprint-2/2-mandatory-debug/2.js | 32 +++++++++++++++++++------ Sprint-2/3-mandatory-implement/1-bmi.js | 7 +++++- 7 files changed, 110 insertions(+), 33 deletions(-) diff --git a/Sprint-2/1-key-errors/0.js b/Sprint-2/1-key-errors/0.js index 653d6f5a07..69142c85f2 100644 --- a/Sprint-2/1-key-errors/0.js +++ b/Sprint-2/1-key-errors/0.js @@ -1,13 +1,29 @@ // Predict and explain first... // =============> write your prediction here +//function capitalize will capitalise the first letter with index 0 +// and will append the sliced string from index 1 which is the second letter // call the function capitalise with a string input + // interpret the error message and figure out why an error is occurring +//syntax Error :identifier the variabel has already been declared. +// As we can see the str variable has already been declared in the prameter of the function instead we just return the value +// The Error message is -function capitalise(str) { - let str = `${str[0].toUpperCase()}${str.slice(1)}`; - return str; -} +// function capitalise(str) { +// let str = `${str[0].toUpperCase()}${str.slice(1)}`; +// console.log(str); +// return str; +// } + + +// =============> write your explanation here -// =============> write your explanation here // =============> write your new code here + +function capitalise(str) { +return `${str[0].toUpperCase()}${str.slice(1)}`; + +} +capitalise("ebrahim"); +capitalise('salomi'); diff --git a/Sprint-2/1-key-errors/1.js b/Sprint-2/1-key-errors/1.js index f2d56151f4..78fe0ad0c7 100644 --- a/Sprint-2/1-key-errors/1.js +++ b/Sprint-2/1-key-errors/1.js @@ -1,20 +1,35 @@ // Predict and explain first... + // Why will an error occur when this program runs? // =============> write your prediction here +//1- The function is trying to declare the decimalNumber twice in the perameter and later as a new variable +//2-console.log() is printing a variable in the local scope where it can't be accessed as it is inside the function + // Try playing computer with the example to work out what is going on -function convertToPercentage(decimalNumber) { - const decimalNumber = 0.5; - const percentage = `${decimalNumber * 100}%`; +// function convertToPercentage(decimalNumber) { +// const decimalNumber = 0.5; +// const percentage = `${decimalNumber * 100}%`; + +// return percentage; +// } - return percentage; -} -console.log(decimalNumber); -// =============> write your explanation here +// =============> write your explanation here +//similar to the previous exercise where the variable decimal Number has already been declared in the parameter +// and already is a local variable which can't be declared again +//As the decimalNumber inside the function we can't print it using the console.log() as it has no power to the local scope +//instead we can delete the second declaration and just leave the parameter as an input for the user which would be nicely work // Finally, correct the code to fix the problem + // =============> write your new code here +function convertToPercentage(decimalNumber) { + const percentage = `${decimalNumber * 100}%`; +return percentage; +} + +console.log(convertToPercentage(0.5)); diff --git a/Sprint-2/1-key-errors/2.js b/Sprint-2/1-key-errors/2.js index aad57f7cfe..83aebfc22c 100644 --- a/Sprint-2/1-key-errors/2.js +++ b/Sprint-2/1-key-errors/2.js @@ -4,16 +4,22 @@ // this function should square any number but instead we're going to get an error // =============> write your prediction of the error here +//The error might be accuring because the parameter can't be a number and should be a variable -function square(3) { - return num * num; -} +// function square(3) { +// return num * num; +// } // =============> write the error message here +//the Error is a syntax error: Unexpected number // =============> explain this error message here +// we can put a number or any argument when we call the number not when we shape it // Finally, correct the code to fix the problem +function square(num) { + return num * num; + } // =============> write your new code here diff --git a/Sprint-2/2-mandatory-debug/0.js b/Sprint-2/2-mandatory-debug/0.js index b27511b417..9f36c2f46a 100644 --- a/Sprint-2/2-mandatory-debug/0.js +++ b/Sprint-2/2-mandatory-debug/0.js @@ -1,14 +1,23 @@ // Predict and explain first... // =============> write your prediction here +// This function would multiply the two arguments a and b whatever that is +// when we log the output we will get the string and the output of the function but because we are not returning an output we might run into an error -function multiply(a, b) { - console.log(a * b); -} +// function multiply(a, b) { +// console.log(a * b); +// } -console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`); +// console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`); // =============> write your explanation here +//The console.log() inside the funtion will print a*b but when we call the function will return() undefined means will return nothing)for the two variables a and b // Finally, correct the code to fix the problem // =============> write your new code here +function multiply(a, b) { + return a * b; +} + +console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`); + diff --git a/Sprint-2/2-mandatory-debug/1.js b/Sprint-2/2-mandatory-debug/1.js index 37cedfbcfd..fa992a8eff 100644 --- a/Sprint-2/2-mandatory-debug/1.js +++ b/Sprint-2/2-mandatory-debug/1.js @@ -1,13 +1,21 @@ // Predict and explain first... // =============> write your prediction here +// The function suppose to return the sum of the two variables but we will encounter an error probably a syntax Error -function sum(a, b) { - return; - a + b; -} - -console.log(`The sum of 10 and 32 is ${sum(10, 32)}`); +// function sum(a, b) { +// return; +// a + b; +// } +// console.log(`The sum of 10 and 32 is ${sum(10, 32)}`); +// As we return nothing by closing the line with a semicolon hence a + b is not returned where we tell the computer to exit and go back to global scope and the computer will not be able to read the lines after that // =============> write your explanation here + // Finally, correct the code to fix the problem // =============> write your new code here + +function sum(a, b) { + return a + b; +} + +console.log(`The sum of 10 and 32 is ${sum(10, 32)}`); diff --git a/Sprint-2/2-mandatory-debug/2.js b/Sprint-2/2-mandatory-debug/2.js index 57d3f5dc35..1b897f8f1f 100644 --- a/Sprint-2/2-mandatory-debug/2.js +++ b/Sprint-2/2-mandatory-debug/2.js @@ -2,23 +2,41 @@ // Predict the output of the following code: // =============> Write your prediction here +//getLastDigit will convert a number to a string and reverse it +// However, since there is no parameter or local variable we might run into an Error -const num = 103; +// const num = 103; -function getLastDigit() { - return num.toString().slice(-1); -} +// function getLastDigit() { +// return num.toString().slice(-1); +// } -console.log(`The last digit of 42 is ${getLastDigit(42)}`); -console.log(`The last digit of 105 is ${getLastDigit(105)}`); -console.log(`The last digit of 806 is ${getLastDigit(806)}`); +// console.log(`The last digit of 42 is ${getLastDigit(42)}`); +// console.log(`The last digit of 105 is ${getLastDigit(105)}`); +// console.log(`The last digit of 806 is ${getLastDigit(806)}`); // Now run the code and compare the output to your prediction // =============> write the output here +// The last digit of 42 is 3 +// The last digit of 105 is 3 +// The last digit of 806 is 3 // Explain why the output is the way it is // =============> write your explanation here +// As expected, the function has no parameters, so it relies on the global variable "num" as its only variable. +// Since there are no parameters defined, the function permanently uses the global variable instead. +// This means even if we pass arguments when calling the function, they will be ignored because there are no parameters to receive them. + // Finally, correct the code to fix the problem // =============> write your new code here +function getLastDigit(num) { + return num.toString().slice(-1); + } + + console.log(`The last digit of 42 is ${getLastDigit(42)}`); + console.log(`The last digit of 105 is ${getLastDigit(105)}`); + console.log(`The last digit of 806 is ${getLastDigit(806)}`); + + // This program should tell the user the last digit of each number. // Explain why getLastDigit is not working properly - correct the problem diff --git a/Sprint-2/3-mandatory-implement/1-bmi.js b/Sprint-2/3-mandatory-implement/1-bmi.js index 17b1cbde1b..a05e815ec9 100644 --- a/Sprint-2/3-mandatory-implement/1-bmi.js +++ b/Sprint-2/3-mandatory-implement/1-bmi.js @@ -15,5 +15,10 @@ // It should return their Body Mass Index to 1 decimal place function calculateBMI(weight, height) { + let result = weight / (height*height); + return result.toFixed(1); + // return the BMI of someone based off their weight and height -} \ No newline at end of file +} + +console.log(calculateBMI(70,168)) \ No newline at end of file From d4240708f22726b1eb57b22c673933277fe8b1bc Mon Sep 17 00:00:00 2001 From: Ebrahim_Moqbel Date: Fri, 27 Feb 2026 15:10:09 +0000 Subject: [PATCH 07/15] solved the 3-mandatory implement file --- Sprint-2/3-mandatory-implement/1-bmi.js | 7 ++++--- Sprint-2/3-mandatory-implement/2-cases.js | 6 ++++++ Sprint-2/3-mandatory-implement/3-to-pounds.js | 21 +++++++++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/Sprint-2/3-mandatory-implement/1-bmi.js b/Sprint-2/3-mandatory-implement/1-bmi.js index a05e815ec9..9b759d6ddb 100644 --- a/Sprint-2/3-mandatory-implement/1-bmi.js +++ b/Sprint-2/3-mandatory-implement/1-bmi.js @@ -15,10 +15,11 @@ // It should return their Body Mass Index to 1 decimal place function calculateBMI(weight, height) { - let result = weight / (height*height); + let result = Number(weight/(height*height)); return result.toFixed(1); - // return the BMI of someone based off their weight and height + } -console.log(calculateBMI(70,168)) \ No newline at end of file +console.log(calculateBMI(70,1.7)) +console.log(calculateBMI(72,1.7)) diff --git a/Sprint-2/3-mandatory-implement/2-cases.js b/Sprint-2/3-mandatory-implement/2-cases.js index 5b0ef77ad9..d035a53b13 100644 --- a/Sprint-2/3-mandatory-implement/2-cases.js +++ b/Sprint-2/3-mandatory-implement/2-cases.js @@ -14,3 +14,9 @@ // You will need to come up with an appropriate name for the function // Use the MDN string documentation to help you find a solution // This might help https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase +function toUpperSnakeFormat(string){ + return string.toUpperCase().replaceAll(" ","_") + +} +console.log(toUpperSnakeFormat("hello there")) +console.log(toUpperSnakeFormat("lord of the rings")) \ No newline at end of file diff --git a/Sprint-2/3-mandatory-implement/3-to-pounds.js b/Sprint-2/3-mandatory-implement/3-to-pounds.js index 6265a1a703..6d6d0502c8 100644 --- a/Sprint-2/3-mandatory-implement/3-to-pounds.js +++ b/Sprint-2/3-mandatory-implement/3-to-pounds.js @@ -4,3 +4,24 @@ // You will need to declare a function called toPounds with an appropriately named parameter. // You should call this function a number of times to check it works for different inputs + function toPounds(penceString){ + const penceStringWithoutTrailingP = penceString.substring( + 0, + penceString.length - 1 +); + const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"); +const pounds = paddedPenceNumberString.substring( + 0, + paddedPenceNumberString.length - 2 +); + +const pence = paddedPenceNumberString + .substring(paddedPenceNumberString.length - 2) + .padEnd(2, "0"); + return `£${pounds}.${pence}` + } + + +console.log(toPounds('987p')); +console.log(toPounds('909p')); +console.log(toPounds('345p')); \ No newline at end of file From 2eaa8513fb8cec5b09b0494900b689fc2f02304b Mon Sep 17 00:00:00 2001 From: Ebrahim_Moqbel Date: Fri, 27 Feb 2026 16:04:23 +0000 Subject: [PATCH 08/15] solved the mandatory interpret --- Sprint-2/4-mandatory-interpret/time-format.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Sprint-2/4-mandatory-interpret/time-format.js b/Sprint-2/4-mandatory-interpret/time-format.js index 7c98eb0e8c..4d01b16811 100644 --- a/Sprint-2/4-mandatory-interpret/time-format.js +++ b/Sprint-2/4-mandatory-interpret/time-format.js @@ -11,24 +11,28 @@ function formatTimeDisplay(seconds) { return `${pad(totalHours)}:${pad(remainingMinutes)}:${pad(remainingSeconds)}`; } +console.log(formatTimeDisplay(60)) // You will need to play computer with this example - use the Python Visualiser https://pythontutor.com/visualize.html#mode=edit // to help you answer these questions // Questions // a) When formatTimeDisplay is called how many times will pad be called? -// =============> write your answer here +// =============> 3 times // Call formatTimeDisplay with an input of 61, now answer the following: // b) What is the value assigned to num when pad is called for the first time? -// =============> write your answer here +// =============> the first time pad was called with the totalHours // c) What is the return value of pad is called for the first time? -// =============> write your answer here +// =============> "00" + // d) What is the value assigned to num when pad is called for the last time in this program? Explain your answer -// =============> write your answer here +// =============> "1" +// the last time, pad() is called with the remaining seconds which is value "1" // e) What is the return value assigned to num when pad is called for the last time in this program? Explain your answer -// =============> write your answer here +// =============> "01" +// When it is call for the last time it adds 0 before 1 to make it 2 characters long From 1c37d582297fee30f5297f88f174a1902ea42452 Mon Sep 17 00:00:00 2001 From: Ebrahim_Moqbel Date: Sat, 28 Feb 2026 01:26:11 +0000 Subject: [PATCH 09/15] Deleted the changes of the sprint one file to meet the mata Data validation --- Sprint-1/1-key-exercises/1-count.js | 2 -- Sprint-1/1-key-exercises/2-initials.js | 4 ++-- Sprint-1/1-key-exercises/3-paths.js | 9 ++++----- Sprint-1/1-key-exercises/4-random.js | 7 ------- Sprint-1/2-mandatory-errors/0.js | 4 ++-- Sprint-1/2-mandatory-errors/1.js | 2 +- Sprint-1/2-mandatory-errors/2.js | 5 +---- Sprint-1/2-mandatory-errors/3.js | 5 +---- Sprint-1/2-mandatory-errors/4.js | 4 ++-- .../1-percentage-change.js | 18 +----------------- .../3-mandatory-interpret/2-time-format.js | 18 +----------------- Sprint-1/3-mandatory-interpret/3-to-pounds.js | 18 ------------------ Sprint-1/4-stretch-explore/chrome.md | 5 +---- Sprint-1/4-stretch-explore/objects.md | 4 ---- 14 files changed, 16 insertions(+), 89 deletions(-) diff --git a/Sprint-1/1-key-exercises/1-count.js b/Sprint-1/1-key-exercises/1-count.js index 0d9c8a8807..117bcb2b6e 100644 --- a/Sprint-1/1-key-exercises/1-count.js +++ b/Sprint-1/1-key-exercises/1-count.js @@ -4,5 +4,3 @@ 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 an assignment where = is an assignment operator and in there we are adding value of 1 to the count variable diff --git a/Sprint-1/1-key-exercises/2-initials.js b/Sprint-1/1-key-exercises/2-initials.js index f6b16b3226..47561f6175 100644 --- a/Sprint-1/1-key-exercises/2-initials.js +++ b/Sprint-1/1-key-exercises/2-initials.js @@ -6,6 +6,6 @@ let lastName = "Johnson"; // 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 = ``; -console.log(`the initials is ${firstName.charAt(0)}, ${middleName.charAt(0), lastName.charAt(0)}`); -// https://www.google.com/search?q=get+first+character+of+string+mdn \ No newline at end of file +// 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 0014c33ed6..ab90ebb28e 100644 --- a/Sprint-1/1-key-exercises/3-paths.js +++ b/Sprint-1/1-key-exercises/3-paths.js @@ -15,10 +15,9 @@ const base = filePath.slice(lastSlashIndex + 1); 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 +// Create a variable to store the ext part of the variable -const dir = filePath.slice(0, lastSlashIndex); -const ext = filePath.slice(filePath.lastIndexOf(".")); +const dir = ; +const ext = ; - -// https://www.google.com/search?q=slice+mdn \ No newline at end of file +// 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 87c0e721df..292f83aabb 100644 --- a/Sprint-1/1-key-exercises/4-random.js +++ b/Sprint-1/1-key-exercises/4-random.js @@ -7,10 +7,3 @@ 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 - -// math.floor will make the number as a whole and remove any decimals or more likely to round the the nearest whole number -// math.random will generate a random number from 0 to 1 but not 1 -// (maximum - minimum + 1) provide a range of generated random number -// num is a random whole number between 1 and 100 - -console.log(num); \ No newline at end of file diff --git a/Sprint-1/2-mandatory-errors/0.js b/Sprint-1/2-mandatory-errors/0.js index 65ad3030d6..cf6c5039f7 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 031839b47d..7a43cbea76 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 -let age = 33; +const age = 33; age = age + 1; diff --git a/Sprint-1/2-mandatory-errors/2.js b/Sprint-1/2-mandatory-errors/2.js index 8766299661..e09b89831d 100644 --- a/Sprint-1/2-mandatory-errors/2.js +++ b/Sprint-1/2-mandatory-errors/2.js @@ -1,8 +1,5 @@ // Currently trying to print the string "I was born in Bolton" but it isn't working... // what's the error ? -const cityOfBirth = "Bolton"; console.log(`I was born in ${cityOfBirth}`); -//const cityOfBirth = "Bolton"; - -// the error is that cityOfBirth varaible declared after the logging command \ No newline at end of file +const cityOfBirth = "Bolton"; diff --git a/Sprint-1/2-mandatory-errors/3.js b/Sprint-1/2-mandatory-errors/3.js index 01b95531d8..ec101884db 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.slice(-4); // The last4Digits variable should store the last 4 digits of cardNumber // However, the code isn't working @@ -7,6 +7,3 @@ const cardNumber = 4533787178994213; // 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 - -// I predicted the last four digits bit it has to be a string in order to use the method slice and that explain why it wasn't working -const last4Digits = cardNumber.toString.slice(-4); \ 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 f0ab94e129..21dad8c5d1 100644 --- a/Sprint-1/2-mandatory-errors/4.js +++ b/Sprint-1/2-mandatory-errors/4.js @@ -1,2 +1,2 @@ -const twelveHourClockTime = "20:53"; -const twentyFourHourClockTime = "08:53"; \ No newline at end of file +const 12HourClockTime = "20:53"; +const 24hourClockTime = "08:53"; \ 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 5b036d6c1e..e24ecb8e18 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,27 +12,11 @@ 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 -//1-carPrice.replaceAll(",", "") in line 4 -//3-number(...) in line 4 - enumerate the first result of replaceAll -//2-priceAfterOneYear.replaceAll("," ,"")) in line 5 -//4-number(...) in line 5 - enumerate the second result of replaceAll -//5-console.log(..) - line 9 - // 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? -// the error is : a syntax error coming from the missing comma in line 5 between the arguments - - // c) Identify all the lines that are variable reassignment statements -// const priceDifference = carPrice - priceAfterOneYear; Line 7 -// const percentageChange = (priceDifference / carPrice) * 100; Line 8 // d) Identify all the lines that are variable declarations -// carPrice = Number(carPrice.replaceAll(",", "")); Line 4 -// priceAfterOneYear = Number(priceAfterOneYear.replaceAll(",", "")); Line 5 // e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression? -// the number function convert the enumerate a string to a number and the method replaceAll replace ever comma with a space -// the purpose is to clean the value so that it can be converted to a proper number using Number(). - diff --git a/Sprint-1/3-mandatory-interpret/2-time-format.js b/Sprint-1/3-mandatory-interpret/2-time-format.js index b993fcd035..47d2395587 100644 --- a/Sprint-1/3-mandatory-interpret/2-time-format.js +++ b/Sprint-1/3-mandatory-interpret/2-time-format.js @@ -1,5 +1,4 @@ - -const movieLength = -8789; // length of movie in seconds +const movieLength = 8784; // length of movie in seconds const remainingSeconds = movieLength % 60; const totalMinutes = (movieLength - remainingSeconds) / 60; @@ -13,29 +12,14 @@ 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? -// There are 5 variable declarations // b) How many function calls are there? -// There are 4 function calls in line 9 and 10 // c) Using documentation, explain what the expression movieLength % 60 represents // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators -// % is a modulo operator that return the remainder of a multiplied number // d) Interpret line 4, what does the expression assigned to totalMinutes mean? -// movieLength subtract the left over seconds from the total seconds(movieLength) to get a number that is divisible by 60 -// when dividing by 60 would convert the remaining seconds into whole minutes which ensures there is no decimal in totalMinutes - // e) What do you think the variable result represents? Can you think of a better name for this variable? -// results present length of movie formatted as Hours:Minutes:Seconds and a better name could be movieDuration - // f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer - -// whole positive value: for the 8789 seconds the formatted duration would be fine 2:26:29 and the code would be working as expected -// under 60 seconds: 59 seconds would assign the hours and minutes both as 0s resulting 0:0:59 instead of the normal formatted way 00:00:59 but still correct -// zero value: the formatted duration would also be correct 0:0:0 even though it is an unusual value it still show that it can handle it -// Negative value: for the -8789 seconds would give us an output of -2:-26:-29 which is not a valid format and doesn't make any sense -// the logic breaks where we need to give the user a message to enter a valid number -// diff --git a/Sprint-1/3-mandatory-interpret/3-to-pounds.js b/Sprint-1/3-mandatory-interpret/3-to-pounds.js index 08fad0d5f9..60c9ace69a 100644 --- a/Sprint-1/3-mandatory-interpret/3-to-pounds.js +++ b/Sprint-1/3-mandatory-interpret/3-to-pounds.js @@ -23,23 +23,5 @@ console.log(`£${pounds}.${pence}`); // You need to do a step-by-step breakdown of each line in this program // Try and describe the purpose / rationale behind each step - // 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); reassigned a new value -// using the method substring starting form the index 0 ="3" and ending with -1 exclusively meaning doesn't include 'p' -// resulting with a numeric part of the price which is '399' - -//3.const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"); -// ensure the number in a 3 digits format by adding zeros minding the consistency of the formatting. - -//4.const pounds = paddedPenceNumberString.substring(0,paddedPenceNumberString.length - 2); -//extracts everything except the last two number to form the pound portion of the price - -//5.const pence = paddedPenceNumberString.substring(paddedPenceNumberString.length - 2).padEnd(2, "0"); -//extracts the last two digits to form the pence portion of the price and the padEnd method ensure the number in a two digits format consistent - -//6.console.log(`£${pounds}.${pence}`); -//Combines everything into the final formatted price string. Result: £3.99 -//basically the program will take the string "399p" and print out a string of "£3.99" \ No newline at end of file diff --git a/Sprint-1/4-stretch-explore/chrome.md b/Sprint-1/4-stretch-explore/chrome.md index f635079c6d..e7dd5feafe 100644 --- a/Sprint-1/4-stretch-explore/chrome.md +++ b/Sprint-1/4-stretch-explore/chrome.md @@ -11,11 +11,8 @@ 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 message on the middle top of the page with a sting "Hello world!" 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`. What effect does calling the `prompt` function have? -It shows a pop up box message with the sting "What is your name?" as an input in the middle top of the page -What is the return value of `prompt`? -it returns the text the user enters or an empty string if enter nothing in case cancel would return null +What is the return value of `prompt`? diff --git a/Sprint-1/4-stretch-explore/objects.md b/Sprint-1/4-stretch-explore/objects.md index 0da365f997..0216dee56a 100644 --- a/Sprint-1/4-stretch-explore/objects.md +++ b/Sprint-1/4-stretch-explore/objects.md @@ -5,16 +5,12 @@ 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? -log() { [native code] } Now enter just `console` in the Console, what output do you get back? -console {debug: ƒ, error: ƒ, info: ƒ, log: ƒ, warn: ƒ, …} Try also entering `typeof console` Answer the following questions: What does `console` store? -The console stores the history of messages your code prints while it runs What does the syntax `console.log` or `console.assert` mean? In particular, what does the `.` mean? -"." is called a dot notation where we can get access sth that belong to an object and the syntax means that we are accessing the methods that belong to the object console. \ No newline at end of file From 4d8de067f9298a01b2c83c880424ba61e2a9fdd0 Mon Sep 17 00:00:00 2001 From: Ebrahim-Moqbel Date: Tue, 28 Jul 2026 13:38:21 +0100 Subject: [PATCH 10/15] reviwing the content for updates and polishing my explanations --- Sprint-2/1-key-errors/0.js | 23 +++++++++++++---------- Sprint-2/1-key-errors/1.js | 12 ++++++------ Sprint-2/1-key-errors/2.js | 13 ++++++++----- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/Sprint-2/1-key-errors/0.js b/Sprint-2/1-key-errors/0.js index 69142c85f2..730da0489d 100644 --- a/Sprint-2/1-key-errors/0.js +++ b/Sprint-2/1-key-errors/0.js @@ -1,14 +1,17 @@ // Predict and explain first... // =============> write your prediction here -//function capitalize will capitalise the first letter with index 0 -// and will append the sliced string from index 1 which is the second letter +/* +I predict the function will throw a SyntaxError as the variable str has already been declared in the function parameter +function capitalize will capitalise the first letter with index 0 +and will append the sliced string from index 1 which is the second letter +*/ -// call the function capitalise with a string input +//call the function capitalise with a string input -// interpret the error message and figure out why an error is occurring -//syntax Error :identifier the variabel has already been declared. -// As we can see the str variable has already been declared in the prameter of the function instead we just return the value -// The Error message is +// interpret the error message and figure out why an error is occurring : + +/* syntax Error :identifier the variabel has already been declared. +As we can see the str variable has already been declared in the prameter of the function instead we just return the value */ // function capitalise(str) { // let str = `${str[0].toUpperCase()}${str.slice(1)}`; @@ -18,11 +21,11 @@ // =============> write your explanation here - -// =============> write your new code here +/* syntax Error :identifier the variabel has already been declared. +As we can see the str variable has already been declared in the prameter of the function instead we just return the value */ function capitalise(str) { -return `${str[0].toUpperCase()}${str.slice(1)}`; +return str[0].toUpperCase()+str.slice(1); } capitalise("ebrahim"); diff --git a/Sprint-2/1-key-errors/1.js b/Sprint-2/1-key-errors/1.js index 78fe0ad0c7..4971e09f60 100644 --- a/Sprint-2/1-key-errors/1.js +++ b/Sprint-2/1-key-errors/1.js @@ -20,16 +20,16 @@ // =============> write your explanation here -//similar to the previous exercise where the variable decimal Number has already been declared in the parameter -// and already is a local variable which can't be declared again -//As the decimalNumber inside the function we can't print it using the console.log() as it has no power to the local scope -//instead we can delete the second declaration and just leave the parameter as an input for the user which would be nicely work -// Finally, correct the code to fix the problem +/* The variable decimal Number has already been declared in the parameter + and already is a local variable which can't be declared again causing a ReferenceError +As the decimalNumber inside the function we can't print it using the console.log() as it has no power to the local scope +instead we can delete the second declaration and just leave the parameter as an input for the user + Finally, correct the code to fix the problem */ // =============> write your new code here function convertToPercentage(decimalNumber) { const percentage = `${decimalNumber * 100}%`; -return percentage; + return percentage; } console.log(convertToPercentage(0.5)); diff --git a/Sprint-2/1-key-errors/2.js b/Sprint-2/1-key-errors/2.js index 83aebfc22c..40fc19af63 100644 --- a/Sprint-2/1-key-errors/2.js +++ b/Sprint-2/1-key-errors/2.js @@ -4,7 +4,7 @@ // this function should square any number but instead we're going to get an error // =============> write your prediction of the error here -//The error might be accuring because the parameter can't be a number and should be a variable +//I predict the funciton will throw a SyntaxEror as the perametters sould be valid variables like names or identifiers with upholding to the variable naming convention and in this case a number found // function square(3) { // return num * num; @@ -14,13 +14,16 @@ //the Error is a syntax error: Unexpected number // =============> explain this error message here -// we can put a number or any argument when we call the number not when we shape it +/* The function was givin a number as its perameter where in JS only allows varaible names and usnig a number causes a SyntaxError + Also, the function was returning num*num where num is undefined causing a ReferenceError + */ // Finally, correct the code to fix the problem -function square(num) { - return num * num; - } // =============> write your new code here +function square(num) { + return num * num; + } +console.log(square(25)); \ No newline at end of file From 69791bc5f79498fbd3ba0e57d6e55596c867368f Mon Sep 17 00:00:00 2001 From: Ebrahim-Moqbel Date: Tue, 28 Jul 2026 14:44:29 +0100 Subject: [PATCH 11/15] revising and reviewing the content further expalining some of the reasons --- Sprint-2/2-mandatory-debug/0.js | 2 +- Sprint-2/2-mandatory-debug/1.js | 6 ++++-- Sprint-2/2-mandatory-debug/2.js | 8 ++++++-- Sprint-2/4-mandatory-interpret/time-format.js | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Sprint-2/2-mandatory-debug/0.js b/Sprint-2/2-mandatory-debug/0.js index 9f36c2f46a..ec94f147ca 100644 --- a/Sprint-2/2-mandatory-debug/0.js +++ b/Sprint-2/2-mandatory-debug/0.js @@ -11,7 +11,7 @@ // console.log(`The result of multiplying 10 and 32 is ${multiply(10, 32)}`); // =============> write your explanation here -//The console.log() inside the funtion will print a*b but when we call the function will return() undefined means will return nothing)for the two variables a and b +//The console.log() inside the funtion will print a*b but when we call the function will return undefined // Finally, correct the code to fix the problem // =============> write your new code here diff --git a/Sprint-2/2-mandatory-debug/1.js b/Sprint-2/2-mandatory-debug/1.js index fa992a8eff..4d1f4bd48f 100644 --- a/Sprint-2/2-mandatory-debug/1.js +++ b/Sprint-2/2-mandatory-debug/1.js @@ -1,6 +1,6 @@ // Predict and explain first... // =============> write your prediction here -// The function suppose to return the sum of the two variables but we will encounter an error probably a syntax Error +// The function suppose to return the sum of the two variables but we will encounter an error as the code after return is unreachable. // function sum(a, b) { @@ -8,9 +8,11 @@ // a + b; // } // console.log(`The sum of 10 and 32 is ${sum(10, 32)}`); -// As we return nothing by closing the line with a semicolon hence a + b is not returned where we tell the computer to exit and go back to global scope and the computer will not be able to read the lines after that + // =============> write your explanation here +// As we return nothing by closing the line with a semicolon hence a + b is not returned where we tell the computer to exit and go back to global scope and the computer will not be able to read the lines after that + // Finally, correct the code to fix the problem // =============> write your new code here diff --git a/Sprint-2/2-mandatory-debug/2.js b/Sprint-2/2-mandatory-debug/2.js index 1b897f8f1f..9786fb29f1 100644 --- a/Sprint-2/2-mandatory-debug/2.js +++ b/Sprint-2/2-mandatory-debug/2.js @@ -2,8 +2,8 @@ // Predict the output of the following code: // =============> Write your prediction here -//getLastDigit will convert a number to a string and reverse it -// However, since there is no parameter or local variable we might run into an Error +//getLastDigit will convert a number to a string +// However, since there is no parameter or local variable to the function we might run into an Error // const num = 103; @@ -40,3 +40,7 @@ function getLastDigit(num) { // This program should tell the user the last digit of each number. // Explain why getLastDigit is not working properly - correct the problem +/* the reason why getLastDigit isn't working properly is that it doesn't accept any arrguments where there isn't any perameters in its difination. +where it uses the golabal varaible 'num' decalred outside the funtion and already set to 103 + +The correct code includes a parameter 'number' in the difination this allows the function to accept the number passed to it when called*/ \ No newline at end of file diff --git a/Sprint-2/4-mandatory-interpret/time-format.js b/Sprint-2/4-mandatory-interpret/time-format.js index 4d01b16811..dbf72cc10a 100644 --- a/Sprint-2/4-mandatory-interpret/time-format.js +++ b/Sprint-2/4-mandatory-interpret/time-format.js @@ -35,4 +35,4 @@ console.log(formatTimeDisplay(60)) // e) What is the return value assigned to num when pad is called for the last time in this program? Explain your answer // =============> "01" -// When it is call for the last time it adds 0 before 1 to make it 2 characters long +// When it is called for the last time it adds 0 before 1 to make it 2 characters long From 97abaaa3dbb2d88dfefd97d39de25901ede9c8b6 Mon Sep 17 00:00:00 2001 From: Ebrahim-Moqbel Date: Tue, 28 Jul 2026 14:44:30 +0100 Subject: [PATCH 12/15] revising and reviewing the content further expalining some of the reasons From 2efa343c9b2d8c1c74faf50a8894e7176ebde556 Mon Sep 17 00:00:00 2001 From: Ebrahim-Moqbel Date: Tue, 28 Jul 2026 15:09:31 +0100 Subject: [PATCH 13/15] explain the return value of using the function pad --- Sprint-2/4-mandatory-interpret/time-format.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Sprint-2/4-mandatory-interpret/time-format.js b/Sprint-2/4-mandatory-interpret/time-format.js index 72025af56c..e2827cf9f4 100644 --- a/Sprint-2/4-mandatory-interpret/time-format.js +++ b/Sprint-2/4-mandatory-interpret/time-format.js @@ -30,7 +30,7 @@ console.log(formatTimeDisplay(61)) // =============> the first time pad was called with the totalHours // c) What is the return value of pad is called for the first time? -// =============> "0" +// =============> "00" // d) What is the value assigned to num when pad is called for the last time in this program? Explain your answer @@ -39,5 +39,4 @@ console.log(formatTimeDisplay(61)) // e) What is the return value of pad when it is called for the last time in this program? Explain your answer // =============> "01" - - +// the return value is 1 put as we are using pad wouldbe adding leading "0" From 4435e7fa16edbc843df22021fcb7efc6bca29202 Mon Sep 17 00:00:00 2001 From: Ebrahim-Moqbel Date: Tue, 28 Jul 2026 15:10:06 +0100 Subject: [PATCH 14/15] commiting the changes From c2341951b7fa7f6a559a5b5fc572fa5dbb48e64e Mon Sep 17 00:00:00 2001 From: Ebrahim-Moqbel Date: Wed, 29 Jul 2026 14:46:52 +0100 Subject: [PATCH 15/15] comitting changes to march the reviewer suggestions --- Sprint-2/1-key-errors/0.js | 8 ++++---- Sprint-2/2-mandatory-debug/2.js | 2 +- Sprint-2/3-mandatory-implement/1-bmi.js | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Sprint-2/1-key-errors/0.js b/Sprint-2/1-key-errors/0.js index 730da0489d..0fb81013d0 100644 --- a/Sprint-2/1-key-errors/0.js +++ b/Sprint-2/1-key-errors/0.js @@ -2,7 +2,7 @@ // =============> write your prediction here /* I predict the function will throw a SyntaxError as the variable str has already been declared in the function parameter -function capitalize will capitalise the first letter with index 0 +function capitalise will capitalise the first letter with index 0 and will append the sliced string from index 1 which is the second letter */ @@ -25,8 +25,8 @@ As we can see the str variable has already been declared in the prameter of the As we can see the str variable has already been declared in the prameter of the function instead we just return the value */ function capitalise(str) { -return str[0].toUpperCase()+str.slice(1); + return str[0].toUpperCase()+str.slice(1); } -capitalise("ebrahim"); -capitalise('salomi'); +console.log(capitalise("ebrahim")); +console.log(capitalise('salomi')); diff --git a/Sprint-2/2-mandatory-debug/2.js b/Sprint-2/2-mandatory-debug/2.js index 9786fb29f1..3790c0e2e1 100644 --- a/Sprint-2/2-mandatory-debug/2.js +++ b/Sprint-2/2-mandatory-debug/2.js @@ -43,4 +43,4 @@ function getLastDigit(num) { /* the reason why getLastDigit isn't working properly is that it doesn't accept any arrguments where there isn't any perameters in its difination. where it uses the golabal varaible 'num' decalred outside the funtion and already set to 103 -The correct code includes a parameter 'number' in the difination this allows the function to accept the number passed to it when called*/ \ No newline at end of file +The correct code includes a parameter 'num' in the difination this allows the function to accept the number passed to it when called*/ \ No newline at end of file diff --git a/Sprint-2/3-mandatory-implement/1-bmi.js b/Sprint-2/3-mandatory-implement/1-bmi.js index 9b759d6ddb..d3a94913cd 100644 --- a/Sprint-2/3-mandatory-implement/1-bmi.js +++ b/Sprint-2/3-mandatory-implement/1-bmi.js @@ -15,8 +15,8 @@ // It should return their Body Mass Index to 1 decimal place function calculateBMI(weight, height) { - let result = Number(weight/(height*height)); - return result.toFixed(1); + let result = (weight/(height*height)); + return Number(result.toFixed(1)); }