Skip to content
This repository was archived by the owner on Jan 14, 2024. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
6466854
Finished Hello World exercise, experimented and answered the question…
humailhasankhan Jun 21, 2021
aac0473
Completed C-variables exercise by creating a variable and logging the…
humailhasankhan Jun 21, 2021
fe1a980
Finished Strings typeOf exercise by creating myMessage variable and a…
humailhasankhan Jun 21, 2021
a9cc88c
Finished exercise by creating two variables which concatenate in a th…
humailhasankhan Jun 21, 2021
b614a3a
completed both exercises by creating variables to concatenate the fir…
humailhasankhan Jun 21, 2021
845b7b4
completed numbers exercise by creating two variable for total number …
humailhasankhan Jun 21, 2021
b6bb4d0
made changes to the exercise so they reflect the expected results. co…
humailhasankhan Jun 21, 2021
4923c33
Completed floats exercise by creating variables for total and percent…
humailhasankhan Jun 21, 2021
7431455
completed both exercises for Functions by adding return code blocks i…
humailhasankhan Jun 21, 2021
577c13e
Completed all function parameters exercises by creating functions tha…
humailhasankhan Jun 21, 2021
c904d86
completed nested function exercise by creating a function which works…
humailhasankhan Jun 21, 2021
4868a4b
Fixed syntax errors in mandatory exercise 1 and tests pass
humailhasankhan Jun 21, 2021
10d2c3e
Fixed .trim(), .length, return a*b*c in logic errors exercise 2 in ma…
humailhasankhan Jun 22, 2021
9e0181e
Explained what the first two function do and added code block to func…
humailhasankhan Jun 22, 2021
bd7e90f
added code to first function for price + price *0.2 and second functi…
humailhasankhan Jun 22, 2021
43ab58b
completed extra 1 - converted pound to USD by calling function with p…
humailhasankhan Jun 22, 2021
96fc414
completed extra exercise 2 by returning all three functions and decla…
humailhasankhan Jun 22, 2021
397457f
Completed the magic ball 8 extra challenge by generating a random num…
humailhasankhan Jun 23, 2021
a4df901
Refactored the code with the help of one of the mentors and made it m…
humailhasankhan Jun 25, 2021
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
2 changes: 2 additions & 0 deletions exercises/B-hello-world/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,6 @@ Inside of `exercise.js` there's a line of code that will print "Hello world!".
- Try to `console.log()` something different. For example, 'Hello World. I just started learning JavaScript!'.
- Try to console.log() several things at once.
- What happens when you get rid of the quote marks?
We get a syntax error. SyntaxError: missing ) after argument list
- What happens when you console.log() just a number without quotes?
It logs a number to the console. Numbers are not like strings. They do not need quotes around them. Otherwise, they would turn into a string.
2 changes: 2 additions & 0 deletions exercises/B-hello-world/exercise.js
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
console.log("Hello world");
console.log("Hello World. I just started learning JavaScript!");
console.log(12);
3 changes: 3 additions & 0 deletions exercises/C-variables/exercise.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// Start by creating a variable `greeting`
const greeting = "Hello world";

console.log(greeting);
console.log(greeting);
console.log(greeting);
5 changes: 4 additions & 1 deletion exercises/D-strings/exercise.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// Start by creating a variable `message`
const myMessage = "Hi, I am Humail";
const myMessageType = typeof myMessage;

console.log(message);
console.log(myMessage);
console.log(myMessageType);
6 changes: 5 additions & 1 deletion exercises/E-strings-concatenation/exercise.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
// Start by creating a variable `message`
const greetingPartOne = "Hi, my name is ";
const firstName = "Humail";

console.log(message);
const greetingConcatenated = greetingPartOne + firstName;

console.log(greetingConcatenated);
10 changes: 9 additions & 1 deletion exercises/F-strings-methods/exercise.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
// Start by creating a variable `message`
const firstName = "Humail";
const lengthOfMyName = firstName.length;
const message =
"My name is " +
firstName +
" and my name is " +
lengthOfMyName +
" characters long.";

console.log(message);
console.log(message.trim());
7 changes: 7 additions & 0 deletions exercises/F-strings-methods/exercise2.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
const name = " Daniel ";
const lengthOfMyName = name.trim().length;
const message =
"My name is " +
name +
" and my name is " +
lengthOfMyName +
" characters long.";

console.log(message);
7 changes: 7 additions & 0 deletions exercises/G-numbers/exercise.js
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
// Start by creating a variables `numberOfStudents` and `numberOfMentors`
const numberOfStudents = 15;
const numberOfMentors = 8;
const totalNumbers = numberOfStudents + numberOfMentors;

console.log(`Number of students: ${numberOfStudents}`);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

nice use of string template

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.

Thank you.

console.log(`Number of mentors: ${numberOfMentors}`);
console.log(`Total number of students and mentors: ${totalNumbers}`);
6 changes: 6 additions & 0 deletions exercises/I-floats/exercise.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@
var numberOfStudents = 15;
var numberOfMentors = 8;
let totalNumbers = numberOfStudents + numberOfMentors;
let percentageStudents = (numberOfStudents / totalNumbers) * 100;
let percentageMentors = (numberOfMentors / totalNumbers) * 100;

console.log(`Percentage students: ${Math.round(percentageStudents)}%`);
console.log(`Percentage mentors: ${Math.round(percentageMentors)}%`);
5 changes: 5 additions & 0 deletions exercises/J-functions/exercise.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
function halve(number) {
// complete the function here
return number / 2;
}

var result = halve(12);

console.log(result);

let resultTwo = halve(19);

console.log(resultTwo);
1 change: 1 addition & 0 deletions exercises/J-functions/exercise2.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
function triple(number) {
// complete function here
return number * 3;
}

var result = triple(12);
Expand Down
3 changes: 2 additions & 1 deletion exercises/K-functions-parameters/exercise.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Complete the function so that it takes input parameters
function multiply() {
function multiply(num1, num2) {
// Calculate the result of the function and return it
return num1 * num2;
}

// Assign the result of calling the function the variable `result`
Expand Down
3 changes: 3 additions & 0 deletions exercises/K-functions-parameters/exercise2.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
// Declare your function first
function divide(num1, num2) {
return num1 / num2;
}

var result = divide(3, 4);

Expand Down
3 changes: 3 additions & 0 deletions exercises/K-functions-parameters/exercise3.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
// Write your function here
function createGreeting(name) {
return "Hello, my name is " + name;
}

var greeting = createGreeting("Daniel");

Expand Down
6 changes: 4 additions & 2 deletions exercises/K-functions-parameters/exercise4.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
// Declare your function first

function addingNumbers(num1, num2) {
return num1 + num2;
}
// Call the function and assign to a variable `sum`

let sum = addingNumbers(13, 124);
console.log(sum);
3 changes: 3 additions & 0 deletions exercises/K-functions-parameters/exercise5.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
// Declare your function here
function createLongGreeting(name, age) {
return `Hello, my name is ${name} and I'm ${age} years old`;
}

const greeting = createLongGreeting("Daniel", 30);

Expand Down
16 changes: 16 additions & 0 deletions exercises/L-functions-nested/exercise.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,19 @@ var mentor2 = "Irina";
var mentor3 = "Mimi";
var mentor4 = "Rob";
var mentor5 = "Yohannes";

function createUppercaseNames(string) {
return string.toUpperCase();
}

function createShoutyGreeting(name) {
let mentorName = createUppercaseNames(name);
let message = "HELLO " + mentorName;
return message;
}

console.log(createShoutyGreeting(mentor1));
console.log(createShoutyGreeting(mentor2));
console.log(createShoutyGreeting(mentor3));
console.log(createShoutyGreeting(mentor4));
console.log(createShoutyGreeting(mentor5));
10 changes: 8 additions & 2 deletions extra/1-currency-conversion.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
Write a function that converts a price to USD (exchange rate is 1.4 $ to £)
*/

function convertToUSD() {}
function convertToUSD(pound) {
return pound * 1.4;
}

/*
CURRENCY CONVERSION
Expand All @@ -15,7 +17,11 @@ function convertToUSD() {}
They have also decided that they should add a 1% fee to all foreign transactions, which means you only convert 99% of the £ to BRL.
*/

function convertToBRL() {}
function convertToBRL(pound) {
let percentageToConvert = pound * 0.99;
let totalBrazilianAmount = percentageToConvert * 5.7;
return parseFloat(totalBrazilianAmount.toFixed(2));
}

/* ======= TESTS - DO NOT MODIFY =====
There are some Tests in this file that will help you work out if your code is working.
Expand Down
19 changes: 10 additions & 9 deletions extra/2-piping.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,27 @@
the final result to the variable goodCode
*/

function add() {

function add(num1, num2) {
return num1 + num2;
}

function multiply() {

function multiply(a, b) {
return a * b;
}

function format() {

function format(amount) {
return `£${parseFloat(amount.toFixed(1))}`;
}

const startingValue = 2;

// Why can this code be seen as bad practice? Comment your answer.
let badCode =
let badCode = format(multiply(add(startingValue, 10), 2));

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Can you articulate why this code would be bad practice?

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.

My take on this one was that chaining too many times would be considered as bad practice.


/* BETTER PRACTICE */

let goodCode =
let addedNumbers = add(startingValue, 10);
let multipliedNumbers = multiply(addedNumbers, 2);
let goodCode = format(multipliedNumbers);

/* ======= TESTS - DO NOT MODIFY =====
There are some Tests in this file that will help you work out if your code is working.
Expand Down
57 changes: 56 additions & 1 deletion extra/3-magic-8-ball.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,52 @@
Very doubtful.
*/

const veryPositive = [
"It is certain.",
"It is decidedly so.",
"Without a doubt.",
"Yes - definitely.",
"You may rely on it.",
];

const positive = [
"As I see it, yes.",
"Most likely.",
"Outlook good.",
"Yes.",
"Signs point to yes.",
];

const negative = [
"Reply hazy, try again.",
"Ask again later.",
"Better not tell you now.",
"Cannot predict now.",
"Concentrate and ask again.",
];

const veryNegative = [
"Don't count on it.",
"My reply is no.",
"My sources say no.",
"Outlook not so good.",
"Very doubtful.",
];

const allAnswers = veryPositive.concat(positive, negative, veryNegative);

// This should log "The ball has shaken!"
// and return the answer.
function shakeBall() {
//Write your code in here

console.log("The ball has shaken!");

const answerIndex = Math.floor(Math.random() * allAnswers.length);

return allAnswers[answerIndex];
}
let ans = shakeBall();

/*
This function should say whether the answer it is given is
Expand All @@ -58,9 +99,21 @@ function shakeBall() {

This function should expect to be called with any value which was returned by the shakeBall function.
*/

function checkAnswer(answer) {
//Write your code in here

if (veryPositive.includes(answer)) {
return "very positive";
} else if (positive.includes(answer)) {
return "positive";
} else if (negative.includes(answer)) {
return "negative";
} else if (veryNegative.includes(answer)) {
return "very negative";
Comment on lines +105 to +113

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

nice - this is a good use case for the array method "includes"

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.

Thank you Paul. This was refactored with the help of Guardians.

}
}
checkAnswer(ans);

/*
==================================
Expand Down Expand Up @@ -101,7 +154,9 @@ test("magic 8 ball returns different values each time", () => {
);
}

let seenPositivities = new Set(Array.from(seenAnswers.values()).map(checkAnswer));
let seenPositivities = new Set(
Array.from(seenAnswers.values()).map(checkAnswer)
);
if (seenPositivities.size < 2) {
throw Error(
"Expected to random answers with different positivities each time shakeBall was called, but always got the same one"
Expand Down
11 changes: 6 additions & 5 deletions mandatory/1-syntax-errors.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
// There are syntax errors in this code - can you fix it to pass the tests?

function addNumbers(a b c) {
function addNumbers(a, b, c) {
return a + b + c;
}

function introduceMe(name, age)
return "Hello, my name is " + name "and I am " age + "years old";
function introduceMe(name, age) {
return "Hello, my name is " + name + " and I am " + age + " years old";
}

function getTotal(a, b) {
total = a ++ b;
total = a + b;

return "The total is total";
return "The total is " + total;
}

/*
Expand Down
7 changes: 3 additions & 4 deletions mandatory/2-logic-error.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
// The syntax for this function is valid but it has an error, find it and fix it.

function trimWord(word) {
return wordtrim();
return word.trim();
}

function getStringLength(word) {
return "word".length();
return word.length;
}

function multiply(a, b, c) {
a * b * c;
return;
return a * b * c;
}

/*
Expand Down
4 changes: 4 additions & 0 deletions mandatory/3-function-output.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
// Add comments to explain what this function does. You're meant to use Google!
// Whenever this function is called, it generates a random number and multiplies it by 10.
function getRandomNumber() {
return Math.random() * 10;
}

// Add comments to explain what this function does. You're meant to use Google!
//This function takes two parameters which are strings and concatenates them into one string.
function combine2Words(word1, word2) {
return word1.concat(word2);
}

function concatenate(firstWord, secondWord, thirdWord) {
// Write the body of this function to concatenate three words together.
// Look at the test case below to understand what this function is expected to return.
// We could not use concat() because it only accepts strings. It would not meet all conditions of the test.
return firstWord + " " + secondWord + " " + thirdWord;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

How would you explain what happens in this function in order for the last test case to work with a number?

Google "javascript coercion" if you'd like to find out more! We'll see more examples of this throughout the course.

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.

I would have to look it up. But my guess is that it has to do something with adding numbers and strings together. 13 is a number in the last test and the rest are strings. Probably the typeof would be different and they would be added together but not computed? I will look into javascript coercion. Thanks Paul.

}

/*
Expand Down
9 changes: 7 additions & 2 deletions mandatory/4-tax.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
Sales tax is 20% of the price of the product.
*/

function calculateSalesTax() {}
function calculateSalesTax(price) {
return price + price * 0.2;
}

/*
CURRENCY FORMATTING
Expand All @@ -17,7 +19,10 @@ function calculateSalesTax() {}
Remember that the prices must include the sales tax (hint: you already wrote a function for this!)
*/

function addTaxAndFormatCurrency() {}
function addTaxAndFormatCurrency(price) {
let totalAmount = calculateSalesTax(price);
return `£${totalAmount.toFixed(2)}`;
}

/*
===================================================
Expand Down
Loading