Skip to content
Closed
3 changes: 3 additions & 0 deletions Sprint-1/1-key-exercises/1-count.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@ 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 assigning (count + 1) to the variable count.
// In other word adding 1 to the variable count.
6 changes: 5 additions & 1 deletion Sprint-1/1-key-exercises/2-initials.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ 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);
console.log(typeof initials);

// https://www.google.com/search?q=get+first+character+of+string+mdn

// I used the mdn documentation to know how to get the first character of a string.
// I used charAt() method that takes the index of a string and return the character of it.
13 changes: 9 additions & 4 deletions Sprint-1/1-key-exercises/3-paths.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,18 @@

const filePath = "/Users/mitch/cyf/Module-JS1/week-1/interpret/file.txt";
const lastSlashIndex = filePath.lastIndexOf("/");
const base = filePath.slice(lastSlashIndex + 1);
const base = filePath.slice(-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, -8);
const ext = filePath.slice(filePath.length-3);

// https://www.google.com/search?q=slice+mdn
console.log(`the dir part of filePath variable is ${dir}`);
console.log(ext);

// https://www.google.com/search?q=slice+mdn

// After studying the slice() method I was able to do this task easily.
6 changes: 6 additions & 0 deletions Sprint-1/1-key-exercises/4-random.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,14 @@ const minimum = 1;
const maximum = 100;

const num = Math.floor(Math.random() * (maximum - minimum + 1)) + minimum;
console.log(num);

// In this exercise, you will need to work out what num represents?
// 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

// num is a variable that will be assigned an integer number after the operators are done.
// Math.floor() rounds a decimal to its nearest number to make it an integer. ex = 1.2 => 1.
// Math.random() is a method used to create numbers between (0-1) and usually it creates a decimal like (0,2) or etc.
// each time I run it, I got different number as Math.random() generates different number each time we run it.
8 changes: 7 additions & 1 deletion Sprint-1/2-mandatory-errors/0.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@

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 don't want the computer to run these 2 lines - how can we solve this problem?

//solution: Simply comment the lines.
// 1- single line comment like: // example ...
// 2- multiline comment like : /* a, b, c */
// comments are for instruction of guidance of who will read our codes, but the computer wont read them.
8 changes: 7 additions & 1 deletion Sprint-1/2-mandatory-errors/1.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
// trying to create an age variable and then reassign the value by 1

const age = 33;
age = age + 1;
//age = age + 1;

// we can't do that with const variable, because JS locks the reference.
// the best choice is to use "let" variable.
let age2 = 33;
age2 = age2 + 1; // or age++ if wanna increase by "1";
console.log(age2);
6 changes: 5 additions & 1 deletion Sprint-1/2-mandatory-errors/2.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
// 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 problem is that our variable is not declared when we print it.
// to make it work, we should declare our "cityOfBirth" variable before we print it.
11 changes: 10 additions & 1 deletion Sprint-1/2-mandatory-errors/3.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
const cardNumber = 4533787178994213;
const last4Digits = cardNumber.slice(-4);
//const last4Digits = cardNumber.slice(-4);
let str = cardNumber.toString().slice(-4);
const last4Digits = Number(str);
console.log(`${last4Digits} is the last 4 digits of ${cardNumber}`);

//console.log(typeof last4Digits);

// 1- the code is not working because 'slice()' method is not working with numbers.
// 2- it gives "type error" cardNumber.slice is not a function.
// 3- my prediction was correct as I studied the slice method and knew it.

// The last4Digits variable should store the last 4 digits of cardNumber
// However, the code isn't working
Expand Down
12 changes: 11 additions & 1 deletion Sprint-1/2-mandatory-errors/4.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,12 @@
/*
const 12HourClockTime = "20:53";
const 24hourClockTime = "08:53";
const 24hourClockTime = "08:53";
*/
// As far as I know we can not start a variable name with a number in JS.
// Therefore these variables throw error.
// we can start the name of a variable with letters a-z, A-Z, _ ,and $ .
// This is how we correctly name our variables:
const twelveHourClockTime = "20:53";
const twenty4HourClockTime = "08:53";
console.log(`Twelve-hour clock: ${twelveHourClockTime}`);
console.log(`24-hour clock: ${twenty4HourClockTime}`);
12 changes: 7 additions & 5 deletions Sprint-1/3-mandatory-interpret/1-percentage-change.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -12,11 +12,13 @@ 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 and line 5 and it is replaceAll().
// 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?

// error is coming from line 5. The error is because of not putting comma between the inputs of replaceAll function.
// To fix the problem just add a comma between the inputs of replaceAll function.
// c) Identify all the lines that are variable reassignment statements

// Line 4 and 5.
// d) Identify all the lines that are variable declarations

// we have variable declarations at lines 1, 2, 7 and 8.
// e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression?
// the purpose of that expression is to turn into number the string and replace all commas with an empty space.
15 changes: 9 additions & 6 deletions Sprint-1/3-mandatory-interpret/2-time-format.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const movieLength = 8784; // length of movie in seconds
const movieLength = 8724; // length of movie in seconds

const remainingSeconds = movieLength % 60;
const totalMinutes = (movieLength - remainingSeconds) / 60;
Expand All @@ -12,14 +12,17 @@ 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?

// we have 6 variable declarations.
// b) How many function calls are there?

// here we have only one which is 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

// Remainder operator (%), returns the leftover when one operand divided by the other operand.
// movieLength % 60 expression represents the remaining seconds.
// d) Interpret line 4, what does the expression assigned to totalMinutes mean?

// that expression turns the seconds into minutes.
// e) What do you think the variable result represents? Can you think of a better name for this variable?

// the result variable represents the movie length in Hour, minutes and seconds.
// a better name can be "movieLength".
// f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer
// as I changed the value of the movieLength the results has changed too.It means this code works with any value.
29 changes: 16 additions & 13 deletions Sprint-1/3-mandatory-interpret/3-to-pounds.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,16 @@
const penceString = "399p";

const penceStringWithoutTrailingP = penceString.substring(
0,
penceString.length - 1
);
const penceStringWithoutTrailingP =
penceString.substring(0, penceString.length - 1); // => "399";

const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0");
const pounds = paddedPenceNumberString.substring(
0,
paddedPenceNumberString.length - 2
);
const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"); // => "399";
const pounds = paddedPenceNumberString.substring(0, paddedPenceNumberString.length - 2); // => "3"

const pence = paddedPenceNumberString
.substring(paddedPenceNumberString.length - 2)
.padEnd(2, "0");
.substring(paddedPenceNumberString.length - 2) // => "99"
.padEnd(2, "0");

console.log(`£${pounds}.${pence}`);
console.log(`£${pounds}.${pence}`); // => "3.99"

// This program takes a string representing a price in pence
// The program then builds up a string representing the price in pounds
Expand All @@ -24,4 +19,12 @@ console.log(`£${pounds}.${pence}`);
// 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"
// 1. const penceString = "399p": initializes a string variable with the value "399p"
// 2. const penceStringWithoutTrailingP uses the substring()method to remove the last character.
// 3. const paddedPenceNumberString tries to add "0" at the beginning, but the length is already 3; so it does nothing.
// Its worthy to talk about padStart() method. we use this to add a character at the beginning of a string.
// 4. const pound uses the substring() method on paddedPenceNumberString variable and remove its last two characters.Its value ll be "3".
// 5. const pence uses substring() on paddedPenceNumberString variable and take its length and then subtract it with 2 ...
// which will remain like this .substring(1), so it take the index 1 till the last which is only one more index that its character is 9 ...
// so the final value ll be "99". then uses padEnd( 2, "0") that can not add "0" at the end, as we set the length "2".
// 6. Lastly, we print the value of our pound and pence variable. which is "3.99".
5 changes: 5 additions & 0 deletions Sprint-1/4-stretch-explore/chrome.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,12 @@ invoke the function `alert` with an input string of `"Hello world!"`;

What effect does calling the `alert` function have?

`answer` // there ll be a pop-up box showing a message and ask us to press ok in order to get rid of it.

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?
`answer` // Here we also have a pop-up box with an input, and it asks the user to type something.

What is the return value of `prompt`?
`answer` // if the user type something it returns `string` if the user cancel it then it return `null`.
7 changes: 7 additions & 0 deletions Sprint-1/4-stretch-explore/objects.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,11 @@ Try also entering `typeof console`
Answer the following questions:

What does `console` store?

`Answer` => console stores methods(function) that you can call to perform actions like logging, warning, or displaying error.

What does the syntax `console.log` or `console.assert` mean? In particular, what does the `.` mean?

`console.log()` prints the out put.
`console.assert()` checks the condition.
`The dot operator` is called member access. It accesses a property or method of an object.
16 changes: 14 additions & 2 deletions Sprint-2/1-key-errors/0.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,25 @@
// Predict and explain first...
// =============> write your prediction here
// =============> write your prediction here
// `My prediction` => The capitalise function tries to capitalize the first character of the string and concat it with the rest. This function may not run as it has error.

// call the function capitalise with a string input
// `I called the capitalise function and found out there is a syntax error, we have already declared our 'str' variable in our function parameter, so its not a good idea to declare the same variable name as it ll throw an error.`

// interpret the error message and figure out why an error is occurring
// `The error occurs because we have declared the same (str) variable two times`. We can not declare two variables with the same name.

function capitalise(str) {
/*function capitalise(str) {
let str = `${str[0].toUpperCase()}${str.slice(1)}`;
return str;
}
console.log(capitalise("Roman"));*/

// =============> write your explanation here
// `to make this function run we should make we should declare two different variables in our function
// .one as a parameter of the func and assign it with the above value. the second option is to return directly without creating a variable.`
// =============> write your new code here
function capitalized(str2){
let capitalizedStr = `${str2[0].toUpperCase()}${str2.slice(1)}`;
return capitalizedStr;
}
console.log(capitalized("hi dear"));
16 changes: 11 additions & 5 deletions Sprint-2/1-key-errors/1.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
// Predict and explain first...
// =====> This function tries to convert a decimal number to percentage, but I think it will not run as we have declared same variable name two times.

// Why will an error occur when this program runs?
// =============> write your prediction here
// =============> It will throw an error as we have declared decimalNumber variable in our function parameter and again we declared this decimalNumber variable inside our function.

// Try playing computer with the example to work out what is going on

function convertToPercentage(decimalNumber) {
/*function convertToPercentage(decimalNumber) {
const decimalNumber = 0.5;
const percentage = `${decimalNumber * 100}%`;

return percentage;
}
console.log(decimalNumber);*/

console.log(decimalNumber);

// =============> write your explanation here
// =============> I tried to run this, it throw an error like: 'decimalNumber' has already been declared. to fix this we should remove the decimalNumber variable which we have inside our function.

// Finally, correct the code to fix the problem
// =============> write your new code here
function convertToPercentage(decimalNumber) {
const percentage = `${decimalNumber * 100}%`;
console.log(`Your Decimal number will be ${percentage}.`);
return percentage;
}
convertToPercentage(0.9);
15 changes: 11 additions & 4 deletions Sprint-2/1-key-errors/2.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,27 @@

// Predict and explain first BEFORE you run any code...
// ====> As my understanding this function will throw and error as we have have not called the function with the argument 'num' .

// this function should square any number but instead we're going to get an error
// this function should square any number but instead we're going to get an error.
// ====> it will not square any number but 3 when we call it with the argument 'num' inside.

// =============> write your prediction of the error here

function square(3) {
/*function square(3) {
return num * num;
}
}*/

// =============> write the error message here
// the error message is: SyntaxError: Unexpected number.

// =============> explain this error message here
// after running I understood that we can not put a value in function parameter but a variable name. to make it short, in JavaScript we put variable in parameter and value as argument when calling the function.

// Finally, correct the code to fix the problem

// =============> write your new code here
function square(num) {
return num * num;
}
console.log(square(9));


18 changes: 12 additions & 6 deletions Sprint-2/2-mandatory-debug/0.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
// Predict and explain first...

// =============> write your prediction here
// =============> This function will not execute any operation, as it does not return anything.

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
// After running the code, I found that the function works partially, it prints lines 6 and as we called the function on line 9. but line 9 has an error to be fixed. As it does not print what we need.
// also : In JavaScript, if a function doesn’t explicitly return something, it automatically returns. this is why we have got the first input ok and the second input Undefined.

// Finally, correct the code to fix the problem
// =============> write your new code here
// =============> 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)}`);
12 changes: 8 additions & 4 deletions Sprint-2/2-mandatory-debug/1.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
// Predict and explain first...
// =============> write your prediction here
// =============> This function will not return the sum of a + b as the operation is located on the next line or return. so we ll have a syntax error.

function sum(a, b) {
/*function sum(a, b) {
return;
a + b;
}
console.log(`The sum of 10 and 32 is ${sum(10, 32)}`);*/

console.log(`The sum of 10 and 32 is ${sum(10, 32)}`);
// =============> after running the code I got undefined on the output as our function does not return anything. because after return keyword our function do not operate the codes.

// =============> 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)}`);
Loading
Loading