|
| 1 | Welcome to the course! (old) | 2:11 | Open | Open |
| 2 | Welcome to the course | 2:20 | Open | Open |
| 3 | Let's build a passenger counter app! | 0:59 | Open | Open |
| 4 | Setting up our JavaScript file | 2:59 | Open | Open |
| 5 | Write your first JavaScript variable | 4:52 | Open | Open |
| 6 | Basic mathematical operations | 3:35 | Open | Open |
| 7 | Frontend Career Path | 1:56 | Open | Open |
| 8 | Reassigning and incrementing | 3:46 | Open | Open |
| 9 | Adding a button | 1:31 | Open | Open |
| 10 | The onclick event listener | 3:23 | Open | Open |
| 11 | Using functions to write less code | 3:33 | Open | Open |
| 12 | Write your first function | 0:43 | Open | Open |
| 13 | Write a function that logs the sum | 2:46 | Open | Open |
| 14 | Write a function that increments | 1:54 | Open | Open |
| 15 | Increment on clicks | 2:08 | Open | Open |
| 16 | Display the count | 5:13 | Open | Open |
| 17 | The Document Object Model | 1:51 | Open | Open |
| 18 | Display the count with innerText | 0:39 | Open | Open |
| 19 | Create the save button | 2:05 | Open | Open |
| 20 | What is a string? | 1:33 | Open | Open |
| 21 | Write your first string variable | 3:39 | Open | Open |
| 22 | Log a greeting to the console | 1:16 | Open | Open |
| 23 | Strings vs. Numbers | 2:43 | Open | Open |
| 24 | Render a welcome message | 2:00 | Open | Open |
| 25 | Improve the message with string concatenation | 2:15 | Open | Open |
| 26 | Use plus equal for count | 0:25 | Open | Open |
| 27 | Create the save feature | 4:36 | Open | Open |
| 28 | Debugging online | 3:49 | Open | Open |
| 29 | Set the count to 0 | 2:52 | Open | Open |
| 30 | Personalize and Download Your App | 4:37 | Open | Open |
| 31 | Deploy with Netlify | 4:02 | Open | Open |
| 32 | Congrats & recap | 3:14 | Open | Open |
| 33 | Learning in public | 2:56 | Open | Open |
|
| 34 | AI challenges - beta launch | 1:41 | Open | Open |
| 35 | Variables practice | 1:52 | Open | Open |
| 36 | Concatenate two strings in a function | 0:58 | Open | Open |
| 37 | Incrementing and decrementing | 2:11 | Open | Open |
| 38 | Strings and numbers | 1:34 | Open | Open |
| 39 | Rendering an error message | 3:15 | Open | Open |
| 40 | Calculator challenge | 5:30 | Open | Open |
| 41 | Why are Solo Projects important? | 3:12 | Open | Open |
| 42 | Solo Project (PRO) - Basketball Scoreboard | 4:21 | Open | Open |
| 43 | Get a code review! | 2:39 | Open | Open |
| 44 | Want to become a Scrimbassador? | 1:59 | Open | Open |
|
| 45 | Setting Up a Local Dev Environment | 2:47 | Open | Open |
| 46 | Getting Started with GitHub Desktop | 4:18 | Open | Open |
| 47 | Edit with VS Code and Push to GitHub | 3:35 | Open | Open |
| 48 | Deploy and Share Your Solo Project | 1:34 | Open | Open |
|
| 49 | Let's build a Blackjack game! | 0:57 | Open | Open |
| 50 | Add the firstCard, secondCard, and sum | 0:52 | Open | Open |
| 51 | If...else conditionals | 5:39 | Open | Open |
| 52 | Your first if...else statement | 2:53 | Open | Open |
| 53 | if/else...if/else statement | 3:21 | Open | Open |
| 54 | The if...else statement for our game | 1:59 | Open | Open |
| 55 | Aside: Booleans | 3:46 | Open | Open |
| 56 | Add the hasBlackJack variable | 2:03 | Open | Open |
| 57 | Add the isAlive variable | 1:44 | Open | Open |
| 58 | Let's practice boolean conditions | 3:25 | Open | Open |
| 59 | Add the message variable | 3:21 | Open | Open |
| 60 | Link to stylesheet | 2:32 | Open | Open |
| 61 | Add basic styling | 4:18 | Open | Open |
| 62 | Make the start button work | 5:49 | Open | Open |
| 63 | Display the message | 2:32 | Open | Open |
| 64 | Display the sum | 5:43 | Open | Open |
| 65 | Display the cards | 1:53 | Open | Open |
| 66 | New card button | 3:39 | Open | Open |
| 67 | Add to the sum when newCard is clicked | 3:16 | Open | Open |
| 68 | Rename the startGame function | 2:11 | Open | Open |
| 69 | Solving our cards problem with an array | 3:16 | Open | Open |
| 70 | Aside: Intro to arrays | 5:24 | Open | Open |
| 71 | Aside: Array indexes | 4:03 | Open | Open |
| 72 | Arrays with multiple data types | 2:18 | Open | Open |
| 73 | Aside: Array.push() and .pop() | 4:20 | Open | Open |
| 74 | Creating the cards array | 1:04 | Open | Open |
| 75 | Push a new card to the array | 1:18 | Open | Open |
| 76 | Aside: Loops | 4:01 | Open | Open |
| 77 | Write your first loop | 3:22 | Open | Open |
| 78 | Aside: For loops and arrays | 3:43 | Open | Open |
| 79 | Write your first array-based for loop | 1:29 | Open | Open |
| 80 | For loops, arrays, and DOM | 2:55 | Open | Open |
| 81 | Use a loop to render cards | 2:16 | Open | Open |
| 82 | How can we avoid to hard-code card values? | 1:31 | Open | Open |
| 83 | Aside: Returning values in functions | 4:59 | Open | Open |
| 84 | Use a function to set the card values | 3:06 | Open | Open |
| 85 | Aside: Math.random() | 4:15 | Open | Open |
| 86 | Math.random() * 6 | 1:43 | Open | Open |
| 87 | Flooring the number with Math.floor() | 1:24 | Open | Open |
| 88 | Using Math.random() and Math.floor() to create a dice | 1:40 | Open | Open |
| 89 | Completing our dice function | 2:37 | Open | Open |
| 90 | Make getRandomCard() work | 2:54 | Open | Open |
| 91 | Complete getRandomNumber function | 3:02 | Open | Open |
| 92 | Assign values in the startGame function | 2:42 | Open | Open |
| 93 | Our new card feature is broken | 0:59 | Open | Open |
| 94 | Aside: The AND operator (&&) | 3:41 | Open | Open |
| 95 | Write your first logical operator | 2:04 | Open | Open |
| 96 | Aside: The OR operator (||) | 3:02 | Open | Open |
| 97 | Only trigger newCard() if you're allowed to | 1:27 | Open | Open |
| 98 | Object sneak peek | 4:32 | Open | Open |
| 99 | Aside: Intro to objects | 4:43 | Open | Open |
| 100 | Create your first object | 3:15 | Open | Open |
| 101 | Use an object to store player data | 2:37 | Open | Open |
| 102 | Methods on object | 1:58 | Open | Open |
| 103 | Congrats & recap | 4:24 | Open | Open |
|
| 104 | Objects and functions | 2:00 | Open | Open |
| 105 | if else | 2:48 | Open | Open |
| 106 | Loops and arrays | 2:04 | Open | Open |
| 107 | push, pop, unshift, shift challenge | 3:25 | Open | Open |
| 108 | Logical operators | 1:56 | Open | Open |
| 109 | Rock papers scissors | 2:59 | Open | Open |
| 110 | EmojiFighter | 4:32 | Open | Open |
| 111 | Sorting fruits | 2:57 | Open | Open |
| 112 | Solo Project (PRO) - Password Generator | 2:43 | Open | Open |
| 113 | Build exclusive Solo Projects | 1:32 | Open | Open |
|
| 114 | Let's build a Chrome Extension! | 4:33 | Open | Open |
| 115 | Add button and input tag | 1:33 | Open | Open |
| 116 | Style the button and input tag | 7:16 | Open | Open |
| 117 | Make the input button work with onclick | 1:17 | Open | Open |
| 118 | Refactor to addEventListener | 2:18 | Open | Open |
| 119 | Write your first addEventListener() | 1:44 | Open | Open |
| 120 | Your turn to refactor | 1:22 | Open | Open |
| 121 | Create the myLeads array and inputEl | 2:21 | Open | Open |
| 122 | When to use let and const | 3:17 | Open | Open |
| 123 | Push to the myLeads array | 1:10 | Open | Open |
| 124 | Push the value from the input field | 2:27 | Open | Open |
| 125 | Use a for loop to log out leads | 1:39 | Open | Open |
| 126 | Create the unordered list | 1:55 | Open | Open |
| 127 | Render the leads in the unordered list | 3:41 | Open | Open |
| 128 | How to render <li> elements with innerHTML | 1:33 | Open | Open |
| 129 | Write your first innerHTML | 1:31 | Open | Open |
| 130 | More innerHTML practice | 1:48 | Open | Open |
| 131 | Render the <li> elements with innerHTML | 1:07 | Open | Open |
| 132 | Use createElement() and append() instead of innerHTML | 3:35 | Open | Open |
| 133 | Improving the performance of our app | 3:17 | Open | Open |
| 134 | Create the render function | 2:00 | Open | Open |
| 135 | Clear the input field | 2:03 | Open | Open |
| 136 | Add the <a> tag | 4:28 | Open | Open |
| 137 | Template strings | 2:30 | Open | Open |
| 138 | Write your first template string | 1:15 | Open | Open |
| 139 | Make the template string even more dynamic | 0:51 | Open | Open |
| 140 | Template strings on multiple lines | 2:53 | Open | Open |
| 141 | Refactor the app to use a template string | 1:12 | Open | Open |
| 142 | Style the list | 3:50 | Open | Open |
| 143 | Preparing the deployment | 4:52 | Open | Open |
| 144 | Deploying the Chrome Extension | 2:28 | Open | Open |
| 145 | What is localStorage? | 3:02 | Open | Open |
| 146 | Your first localStorage | 3:48 | Open | Open |
| 147 | Storing arrays in localStorage | 6:23 | Open | Open |
| 148 | Save the leads to localStorage | 2:28 | Open | Open |
| 149 | Get the leads from localStorage | 3:50 | Open | Open |
| 150 | Truthy and falsy values | 7:54 | Open | Open |
| 151 | Guess the expression - truthy or falsy? | 2:22 | Open | Open |
| 152 | Checking localStorage before rendering | 3:37 | Open | Open |
| 153 | Style the delete button | 3:17 | Open | Open |
| 154 | Make the delete button work | 4:16 | Open | Open |
| 155 | How function parameters can improve our code | 5:54 | Open | Open |
| 156 | Write your first function parameter | 3:27 | Open | Open |
| 157 | Functions with multiple parameters | 3:11 | Open | Open |
| 158 | Numbers as function parameters | 1:41 | Open | Open |
| 159 | Aside: Arguments vs Parameters | 3:22 | Open | Open |
| 160 | Arrays as parameters | 1:54 | Open | Open |
| 161 | Refactor renderLeads() to use a parameter | 1:39 | Open | Open |
| 162 | Create the tabBtn | 3:19 | Open | Open |
| 163 | Save the tab url | 2:35 | Open | Open |
| 164 | How to get the current tab? | 4:19 | Open | Open |
| 165 | Use the Chrome API to get the tab | 6:18 | Open | Open |
| 166 | Deploy the final version | 2:14 | Open | Open |
| 167 | Congrats & recap | 5:43 | Open | Open |
|
| 168 | let & const | 3:12 | Open | Open |
| 169 | Log out items in an array | 1:17 | Open | Open |
| 170 | save to localStorage | 1:53 | Open | Open |
| 171 | addEventListener and object in array | 2:39 | Open | Open |
| 172 | Generate sentence | 4:53 | Open | Open |
| 173 | Render images | 6:05 | Open | Open |
| 174 | Rounding numbers | 1:45 | Open | Open |
| 175 | Convert string to number challenge | 2:24 | Open | Open |
| 176 | Solo Project (PRO) - Unit converter | 1:54 | Open | Open |
|
| 177 | Let's Build a Mobile App! | 0:00 | Open | Open |
| 178 | Create new Firebase Project | 5:47 | Open | Open |
| 179 | Create new Firebase Realtime Database | 2:57 | Open | Open |
| 180 | Set up Database Environment Variable | 1:51 | Open | Open |
| 181 | Delete unneeded code | 3:35 | Open | Open |
| 182 | Aside: Push data to Firebase Realtime Database | 3:47 | Open | Open |
| 183 | Push a lead to Firebase Realtime Database | 3:22 | Open | Open |
| 184 | Aside: Get a snapshot of data using onValue | 4:00 | Open | Open |
| 185 | Console log data inside of onValue | 1:56 | Open | Open |
| 186 | Aside: Turn an Object into an Array | 1:35 | Open | Open |
| 187 | Render all items using onValue | 2:51 | Open | Open |
| 188 | Aside: Delete all data using remove | 4:39 | Open | Open |
| 189 | Delete all leads using remove | 3:45 | Open | Open |
| 190 | Add label, placeholder and max-width | 2:09 | Open | Open |
| 191 | Aside: Setting the viewport | 1:32 | Open | Open |
| 192 | Adding viewport with meta tag | 1:07 | Open | Open |
| 193 | Aside: Favicon | 5:59 | Open | Open |
| 194 | Adding favicon and phone icons | 1:26 | Open | Open |
| 195 | Aside: Web Application Manifest | 0:00 | Open | Open |
| 196 | Turning the web app into "mobile" app | 0:00 | Open | Open |
| 197 | Deploy to Netlify | 2:27 | Open | Open |
| 198 | Add app to home screen | 1:35 | Open | Open |
| 199 | Recap | 3:27 | Open | Open |
| 200 | Aside: Setting the viewport | 1:50 | Open | Open |
| 201 | Let's Build a Mobile App with Firebase | 3:33 | Open | Open |
| 202 | Setting up app skeleton | 3:47 | Open | Open |
| 203 | Adding CSS | 4:21 | Open | Open |
| 204 | Aside: Firebase Realtime Database | 10:01 | Open | Open |
| 205 | Adding Firebase to project | 4:49 | Open | Open |
| 206 | Security Rules | 2:30 | Open | Open |
| 207 | innerHTML to append li to ul | 3:33 | Open | Open |
| 208 | Refactoring | 4:48 | Open | Open |
| 209 | Aside: Turning an Object into an Array | 4:11 | Open | Open |
| 210 | Aside: Fetching database items in realtime using onValue | 10:22 | Open | Open |
| 211 | Updating items in realtime | 2:43 | Open | Open |
| 212 | For loop to render database items | 2:57 | Open | Open |
| 213 | Let's smash the bug | 2:47 | Open | Open |
| 214 | Aside: Flexbox flex-wrap | 1:18 | Open | Open |
| 215 | Aside: Flexbox gap | 1:18 | Open | Open |
| 216 | Adding CSS for <li> to wrap items | 4:04 | Open | Open |
| 217 | Getting ID of item in database | 4:10 | Open | Open |
| 218 | Replacing innerHTML with createElement | 5:11 | Open | Open |
| 219 | Aside: Removing items from Firebase | 5:17 | Open | Open |
| 220 | Removing an item when clicked | 4:10 | Open | Open |
| 221 | Only fetching items from database if snapshot exists | 4:02 | Open | Open |
| 222 | Adding hover styles to buttons | 1:49 | Open | Open |
| 223 | Accessibility fix | 2:26 | Open | Open |
| 224 | Aside: user-select | 1:41 | Open | Open |
| 225 | Don't over-use user-select! | 0:56 | Open | Open |
| 226 | Making the app more mobile-friendly | 1:34 | Open | Open |
| 227 | Aside: Favicon | 2:04 | Open | Open |
| 228 | Adding favicon and phone icons | 1:13 | Open | Open |
| 229 | Aside: Web Application Manifest | 2:37 | Open | Open |
| 230 | Turning web app into "mobile" app | 0:58 | Open | Open |
| 231 | Personalise your app | 1:27 | Open | Open |
| 232 | Deploy to Netlify | 2:35 | Open | Open |
| 233 | Add app to home screen | 1:52 | Open | Open |
| 234 | Share your creation | 1:45 | Open | Open |
| 235 | Recap | 3:41 | Open | Open |
| 236 | Solo Project (PRO) - We are the Champions | 3:50 | Open | Open |
| 237 | Congrats on completing the Learn JavaScript course! | 4:20 | Open | Open |
|
| 238 | How to Utilize Your Certificate | 0:56 | Open | Open |