Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 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,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 adds 1 to the count and saves the new value back into count. here, = means "store this value", not "equals" like in maths.
2 changes: 1 addition & 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,7 @@ 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] + middleName[0] + lastName[0];

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

6 changes: 3 additions & 3 deletions Sprint-1/1-key-exercises/3-paths.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ 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);
// https://www.google.com/search?q=slice+mdn
3 changes: 3 additions & 0 deletions Sprint-1/1-key-exercises/4-random.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,6 @@ 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
// num is a random whole number between 1 and 100. Math.random() gives a decimal between 0 and 1, multiplying it stretches that range to 0-100, Math.floor rounds it down to a whole number, and + minimum shifts it so the lowest possible value is 1 instead of 0.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your answer is generally correct and I can also basically understand the meaning. Just the clarity can be improved a bit, for example:

  • "whole number" may better be expressed in standard mathematical term "integer";
  • "Math.random() gives a decimal between 0 and 1" would actually be including 0 but excluding 1;
  • after multiply, "it stretches that range to 0-100" including 0 but excluding 100;
  • after rounding, it becomes an integer within the range 0-99 including 0 and including 99;
  • after adding minimum, "shifts it so the lowest possible value is 1" and also the highest possible value is 100;
  • and as a result, num would be a random integer generated between minimum and maximum inclusive.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks so much for taking the time to review this and for the detailed feedback! That really helps clarify things - especially the point about inclusive/exclusive ranges, I hadn't thought about it that precisely. I'll keep "integer" and that level of detail in mind for future explanations. Really appreciate it!



4 changes: 2 additions & 2 deletions Sprint-1/2-mandatory-errors/0.js
Original file line number Diff line number Diff line change
@@ -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?
//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?
3 changes: 2 additions & 1 deletion Sprint-1/2-mandatory-errors/1.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// trying to create an age variable and then reassign the value by 1

const age = 33;
let age = 33;
age = age + 1;
// const variables cannot be reassigned once created. Using let instead allows the value to change.
4 changes: 3 additions & 1 deletion Sprint-1/2-mandatory-errors/2.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
// Currently trying to print the string "I was born in Bolton" but it isn't working...
// what's the error ?

console.log(`I was born in ${cityOfBirth}`);
const cityOfBirth = "Bolton";
console.log(`I was born in ${cityOfBirth}`);

// The console.log was written before the variable was declared, so JavaScript didn't know what cityOfBirth was yet. Moving the declaration above the console.log fixes it.
4 changes: 3 additions & 1 deletion Sprint-1/2-mandatory-errors/3.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
const cardNumber = 4533787178994213;
const last4Digits = cardNumber.slice(-4);
const last4Digits = cardNumber.toString().slice(-4);

// cardNumber is a number, but .slice() only works on strings. Converting it with .toString() first lets us slice the last 4 digits.

// The last4Digits variable should store the last 4 digits of cardNumber
// However, the code isn't working
Expand Down
6 changes: 4 additions & 2 deletions Sprint-1/2-mandatory-errors/4.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
const 12HourClockTime = "8:53pm";
const 24hourClockTime = "20:53";
const twelveHourClockTime = "8:53pm";
const twentyFourHourClockTime = "20:53";

// Variable names cannot begin with a number in JavaScript. Renaming them to start with a letter fixes the error.
12 changes: 6 additions & 6 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 @@ -11,12 +11,12 @@ 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
// a) 5 function calls: replaceAll and Number on line 4, replaceAll and Number on line 5, console.log on line 10.

// 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?
// b) The error is on line 5. There is a comma missing between the two arguments of replaceAll, it should be replaceAll(",", "") not replaceAll("," "").

// c) Identify all the lines that are variable reassignment statements
// c) Lines 4 and 5 are variable reassignment statements.

// d) Identify all the lines that are variable declarations
// d) Lines 1, 2, 7, and 8 are variable declarations.

// e) Describe what the expression Number(carPrice.replaceAll(",","")) is doing - what is the purpose of this expression?
// e) Number(carPrice.replaceAll(",", "")) removes the commas from the string using replaceAll, then Number() converts that string into an actual number so maths can be done with it.
6 changes: 6 additions & 0 deletions Sprint-1/3-mandatory-interpret/2-time-format.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,9 @@ console.log(result);
// e) What do you think the variable result represents? Can you think of a better name for this variable?

// f) Try experimenting with different values of movieLength. Will this code work for all values of movieLength? Explain your answer
// a) 6 variable declarations: movieLength, remainingSeconds, totalMinutes, remainingMinutes, totalHours, result.
// b) 1 function call: console.log.
// c) % is the modulo operator - it gives the remainder after dividing. movieLength % 60 gives the leftover seconds that don't make a full minute.
// d) Line 4 subtracts the leftover seconds from movieLength, then divides by 60 to get the total whole minutes in the movie.
// e) result is the movie length formatted as hours:minutes:seconds, like a timer display. A clearer name could be formattedTime.
// f) The code should work for any positive number of seconds. If movieLength were negative or not a whole number, the output would look wrong or make no sense.
7 changes: 6 additions & 1 deletion Sprint-1/3-mandatory-interpret/3-to-pounds.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,9 @@ 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": initialises a string variable with the value "399p", representing a price of 399 pence.
// 2. const penceStringWithoutTrailingP = penceString.substring(0, penceString.length - 1): this removes the last character of the string (the "p"), leaving just the digits "399".
// 3. const paddedPenceNumberString = penceStringWithoutTrailingP.padStart(3, "0"): this pads the string with leading zeros until it is at least 3 characters long. Since "399" is already 3 characters, it stays "399". This step matters for smaller pence values, e.g. "9p" would become "009", ensuring there are always at least 2 digits left for pence.
// 4. const pounds = paddedPenceNumberString.substring(0, paddedPenceNumberString.length - 2): this takes all characters except the last 2, giving the pounds part of the amount. For "399", this gives "3".
// 5. const pence = paddedPenceNumberString.substring(paddedPenceNumberString.length - 2).padEnd(2, "0"): this takes the last 2 characters of the padded string (the pence part), then pads it with trailing zeros if it's shorter than 2 characters. For "399", this gives "99".
// 6. console.log(£${pounds}.${pence}): this combines the pounds and pence parts into a formatted price string, e.g. "£3.99".
Loading