Let's build a passenger counter app!
Setting up our JavaScript file
Write your first JavaScript variable
Basic mathematical operations
Reassigning and incrementing
The onclick event listener
Using functions to write less code
Write your first function
Write a function that logs the sum
Write a function that increments
The Document Object Model
Display the count with innerText
Write your first string variable
Log a greeting to the console
Improve the message with string concatenation
Personalize and Download Your App
AI challenges - beta launch
Concatenate two strings in a function
Incrementing and decrementing
Rendering an error message
Why are Solo Projects important?
Solo Project (PRO) - Basketball Scoreboard
Let's build a Blackjack game!
Add the firstCard secondCard and sum
Your first if...else statement
if/else...if/else statement
The if...else statement for our game
Add the hasBlackJack variable
Let's practice boolean conditions
Make the start button work
Add to the sum when newCard is clicked
Rename the startGame function
Solving our cards problem with an array
Arrays with multiple data types
Aside: Array.push() and .pop()
Push a new card to the array
Aside: For loops and arrays
Write your first array-based for loop
Use a loop to render cards
How can we avoid to hard-code card values?
Aside: Returning values in functions
Use a function to set the card values
Flooring the number with Math.floor()
Using Math.random() and Math.floor() to create a dice
Completing our dice function
Make getRandomCard() work
Complete getRandomNumber function
Assign values in the startGame function
Our new card feature is broken
Aside: The AND operator (&&)
Write your first logical operator
Aside: The OR operator (||)
Only trigger newCard() if you're allowed to
Use an object to store player data
Let's build a Chrome Extension!
Style the button and input tag
Make the input button work with onclick
Refactor to addEventListener
Write your first addEventListener()
Create the myLeads array and inputEl
When to use let and const
Push to the myLeads array
Push the value from the input field
Use a for loop to log out leads
Create the unordered list
Render the leads in the unordered list
How to render <li> elements with innerHTML
Write your first innerHTML
Render the <li> elements with innerHTML
Use createElement() and append() instead of innerHTML
Improving the performance of our app
Create the render function
Write your first template string
Make the template string even more dynamic
Template strings on multiple lines
Refactor the app to use a template string
Deploying the Chrome Extension
Storing arrays in localStorage
Save the leads to localStorage
Get the leads from localStorage
Guess the expression - truthy or falsy?
Checking localStorage before rendering
Make the delete button work
How function parameters can improve our code
Write your first function parameter
Functions with multiple parameters
Numbers as function parameters
Aside: Arguments vs Parameters
Refactor renderLeads() to use a parameter
How to get the current tab?
Use the Chrome API to get the tab
Let's Build a Mobile App!
Create new Firebase Project
Create new Firebase Realtime Database
Set up Database Environment Variable
Aside: Push data to Firebase Realtime Database
Push a lead to Firebase Realtime Database
Aside: Get a snapshot of data using onValue
Console log data inside of onValue
Aside: Turn an Object into an Array
Render all items using onValue
Aside: Delete all data using remove
Delete all leads using remove
Add label placeholder and max-width
Aside: Setting the viewport
Adding viewport with meta tag
Adding favicon and phone icons
Aside: Web Application Manifest
Turning the web app into "mobile" app