The Complete JavaScript Course 2023 From Zero to Expert

The modern JavaScript course for everyone! Master JavaScript with projects, challenges and theory. Many courses in one!
The Complete JavaScript Course 2023 From Zero to Expert
File Size :
36.99 GB
Total length :
69h 0m



Jonas Schmedtmann


Last update

Last updated 11/2022



The Complete JavaScript Course 2023 From Zero to Expert

What you’ll learn

Become an advanced, confident, and modern JavaScript developer from scratch
Build 6 beautiful real-world projects for your portfolio (not boring toy apps)
Become job-ready by understanding how JavaScript really works behind the scenes
How to think and work like a developer: problem-solving, researching, workflows
JavaScript fundamentals: variables, if/else, operators, boolean logic, functions, arrays, objects, loops, strings, etc.
Modern ES6+ from the beginning: arrow functions, destructuring, spread operator, optional chaining (ES2020), etc.
Modern OOP: Classes, constructors, prototypal inheritance, encapsulation, etc.
Complex concepts like the ‘this’ keyword, higher-order functions, closures, etc.
Asynchronous JavaScript: Event loop, promises, async/await, AJAX calls and APIs
How to architect your code using flowcharts and common patterns
Modern tools for 2022 and beyond: NPM, Parcel, Babel and ES6 modules
Practice your skills with 50+ challenges and assignments (solutions included)
Get fast and friendly support in the Q&A area
Course pathways: design your unique learning path according to your goals!

The Complete JavaScript Course 2023 From Zero to Expert


No coding experience is necessary to take this course! I take you from beginner to expert!
Any computer and OS will work — Windows, macOS or Linux. We will set up your text editor the course.
A basic understanding of HTML and CSS is a plus, but not a must! The course includes an HTML and CSS crash course.


*** The #1 bestselling JavaScript course on Udemy! ****** Just updated for latest ES2021 and ES2022 features ***”Really, really well made course. Super in-depth, with great challenges and projects that will solidify your Javascript understanding. I found the lectures were paced perfectly — Jonas doesn’t skip over anything that might be useful to a JS developer” — Carson BartholomewJavaScript is the most popular programming language in the world. It powers the entire modern web. It provides millions of high-paying jobs all over the world.That’s why you want to learn JavaScript too. And you came to the right place!Why is this the right JavaScript course for you?This is the most complete and in-depth JavaScript course on Udemy (and maybe the entire internet!). It’s an all-in-one package that will take you from the very fundamentals of JavaScript, all the way to building modern and complex applications.You will learn modern JavaScript from the very beginning, step-by-step. I will guide you through practical and fun code examples, important theory about how JavaScript works behind the scenes, and beautiful and complete projects.You will become ready to continue learning advanced front-end frameworks like React, Vue, Angular, or Svelte.You will also learn how to think like a developer, how to plan application features, how to architect your code, how to debug code, and a lot of other real-world skills that you will need on your developer job.And unlike other courses, this one actually contains beginner, intermediate, advanced, and even expert topics, so you don’t have to buy any other course in order to master JavaScript from the ground up!But… You don’t have to go into all these topics. This is a huge course, because, after all, it’s “The Complete JavaScript Course”. In fact, it’s like many courses in one! But you can become an excellent developer by watching only parts of the course. That’s why I built this course in a very modular way, and designed pathways that will take you through the course faster.By the end of the course, you will have the knowledge and confidence that you need in order to ace your job interviews and become a professional developer.Why am I the right JavaScript teacher for you?My name is Jonas, I’m an experienced web developer and designer, and one of Udemy’s top instructors. I have been teaching this bestselling course since 2016 to over 700,000 developers, always listening to feedback and understanding exactly how students actually learn.I know how students learn JavaScript and what they need in order to master it. And with that knowledge, I designed the ideal course curriculum. It’s a unique blend of real-world projects, deep explanations, theory lectures, and challenges, that will take you from zero to an expert and confident JavaScript developer in just a couple of weeks.So what exactly is covered in the course?Build 5 beautiful real-world projects for your portfolio! In these projects, you will learn how to plan and architect your applications using flowcharts and common JavaScript patternsMaster the JavaScript fundamentals: variables, if/else, operators, boolean logic, functions, arrays, objects, loops, strings, and moreLearn modern JavaScript (ES6+) from the beginning: arrow functions, destructuring, spread operator, default arguments, optional chaining, and moreHow JavaScript works behind the scenes: engines, the call stack, hoisting, scoping, the ‘this’ keyword, reference values, and more.Deep dive into functions: arrow functions, first-class and higher-order functions, bind, and closures.Deep dive into object-oriented programming: prototypal inheritance, constructor functions (ES5), classes (ES6), encapsulation, abstraction, inheritance, and polymorphism. [This is like a small standalone course]Deep dive into asynchronous JavaScript: the event loop, promises, async/await, and error handling. You will use these to access data from third-party APIs with AJAX calls. [This is like a small standalone course]Learn modern tools that are used by professional web developers: NPM, Parcel (module bundler), Babel, and ES6 modulesCheck out the course curriculum for an even more detailed overview of the content :)This is what’s also included in the package:Up-to-date HD-quality videos, that are easy to search and reference (great for Udemy Business students)Professional English captions (not the auto-generated ones)Downloadable starter code and final code for each sectionDownloadable slides for 40+ theory videos (not boring, I promise!)Free support in the course Q&A25+ coding challenges and 25+ assignments to practice your new skills (solutions included)This course is for you if…… you want to gain a true and deep understanding of JavaScript… you have been trying to learn JavaScript but: 1) still don’t really understand JavaScript, or 2) still don’t feel confident to code real apps… you are interested in using a library/framework like React, Angular, Vue, or Node.js in the future… you already know JavaScript and are looking for an advanced course. This course includes expert topics!… you want to get started with programming: JavaScript is a great first language!Does any of these look like you? If so, then start this adventure today, and join me and 700,000+ other developers in the only JavaScript course that you will ever need!


Section 1: Welcome, Welcome, Welcome!

Lecture 1 Course Structure and Projects

Lecture 2 Read Before You Start!

Lecture 3 Watch Before You Start!

Lecture 4 Migration Guide to v2 + Old Course

Lecture 5 Setting Up Our Code Editor

Section 2: JavaScript Fundamentals – Part 1

Lecture 6 Section Intro

Lecture 7 Hello World!

Lecture 8 A Brief Introduction to JavaScript

Lecture 9 Linking a JavaScript File

Lecture 10 Values and Variables

Lecture 11 Practice Assignments

Lecture 12 Data Types

Lecture 13 let, const and var

Lecture 14 Basic Operators

Lecture 15 Operator Precedence

Lecture 16 Coding Challenge #1

Lecture 17 Strings and Template Literals

Lecture 18 Taking Decisions: if / else Statements

Lecture 19 Coding Challenge #2

Lecture 20 Type Conversion and Coercion

Lecture 21 Truthy and Falsy Values

Lecture 22 Equality Operators: == vs. ===

Lecture 23 Boolean Logic

Lecture 24 Logical Operators

Lecture 25 Coding Challenge #3

Lecture 26 The switch Statement

Lecture 27 Statements and Expressions

Lecture 28 The Conditional (Ternary) Operator

Lecture 29 Coding Challenge #4

Lecture 30 JavaScript Releases: ES5, ES6+ and ESNext

Section 3: JavaScript Fundamentals – Part 2

Lecture 31 Section Intro

Lecture 32 Activating Strict Mode

Lecture 33 Functions

Lecture 34 Function Declarations vs. Expressions

Lecture 35 Arrow Functions

Lecture 36 Functions Calling Other Functions

Lecture 37 Reviewing Functions

Lecture 38 Coding Challenge #1

Lecture 39 Introduction to Arrays

Lecture 40 Basic Array Operations (Methods)

Lecture 41 Coding Challenge #2

Lecture 42 Introduction to Objects

Lecture 43 Dot vs. Bracket Notation

Lecture 44 Object Methods

Lecture 45 Coding Challenge #3

Lecture 46 Iteration: The for Loop

Lecture 47 Looping Arrays, Breaking and Continuing

Lecture 48 Looping Backwards and Loops in Loops

Lecture 49 The while Loop

Lecture 50 Coding Challenge #4

Section 4: How to Navigate This Course

Lecture 51 Pathways and Section Roadmaps

Lecture 52 Course Pathways

Section 5: Developer Skills & Editor Setup

Lecture 53 Section Intro

Lecture 54 Section Roadmap

Lecture 55 Setting up Prettier and VS Code

Lecture 56 Installing Node.js and Setting Up a Dev Environment

Lecture 57 Learning How to Code

Lecture 58 How to Think Like a Developer: Become a Problem Solver!

Lecture 59 Using Google, StackOverflow and MDN

Lecture 60 Debugging (Fixing Errors)

Lecture 61 Debugging with the Console and Breakpoints

Lecture 62 Coding Challenge #1

Section 6: [OPTIONAL] HTML & CSS Crash Course

Lecture 63 Section Intro

Lecture 64 Basic HTML Structure and Elements

Lecture 65 Attributes, Classes and IDs

Lecture 66 Basic Styling with CSS

Lecture 67 Introduction to the CSS Box Model

Section 7: JavaScript in the Browser: DOM and Events Fundamentals

Lecture 68 Section Intro

Lecture 69 Section Roadmap

Lecture 70 PROJECT #1: Guess My Number!

Lecture 71 What’s the DOM and DOM Manipulation

Lecture 72 Selecting and Manipulating Elements

Lecture 73 Handling Click Events

Lecture 74 Implementing the Game Logic

Lecture 75 Manipulating CSS Styles

Lecture 76 Coding Challenge #1

Lecture 77 Implementing Highscores

Lecture 78 Refactoring Our Code: The DRY Principle

Lecture 79 PROJECT #2: Modal Window

Lecture 80 Working With Classes

Lecture 81 Handling an “Esc” Keypress Event

Lecture 82 PROJECT #3: Pig Game

Lecture 83 Rolling the Dice

Lecture 84 Switching the Active Player

Lecture 85 Holding Current Score

Lecture 86 Resetting the Game

Section 8: How JavaScript Works Behind the Scenes

Lecture 87 Section Intro

Lecture 88 Section Roadmap

Lecture 89 An High-Level Overview of JavaScript

Lecture 90 The JavaScript Engine and Runtime

Lecture 91 Execution Contexts and The Call Stack

Lecture 92 Scope and The Scope Chain

Lecture 93 Scoping in Practice

Lecture 94 Variable Environment: Hoisting and The TDZ

Lecture 95 Hoisting and TDZ in Practice

Lecture 96 The this Keyword

Lecture 97 The this Keyword in Practice

Lecture 98 Regular Functions vs. Arrow Functions

Lecture 99 Primitives vs. Objects (Primitive vs. Reference Types)

Lecture 100 Primitives vs. Objects in Practice

Section 9: Data Structures, Modern Operators and Strings

Lecture 101 Section Intro

Lecture 102 Section Roadmap

Lecture 103 Destructuring Arrays

Lecture 104 Destructuring Objects

Lecture 105 The Spread Operator (…)

Lecture 106 Rest Pattern and Parameters

Lecture 107 Short Circuiting (&& and ||)

Lecture 108 The Nullish Coalescing Operator (??)

Lecture 109 Logical Assignment Operators

Lecture 110 Coding Challenge #1

Lecture 111 Looping Arrays: The for-of Loop

Lecture 112 Enhanced Object Literals

Lecture 113 Optional Chaining (?.)

Lecture 114 Looping Objects: Object Keys, Values, and Entries

Lecture 115 Coding Challenge #2

Lecture 116 Sets

Lecture 117 Maps: Fundamentals

Lecture 118 Maps: Iteration

Lecture 119 Summary: Which Data Structure to Use?

Lecture 120 Coding Challenge #3

Lecture 121 Working With Strings – Part 1

Lecture 122 Working With Strings – Part 2

Lecture 123 Working With Strings – Part 3

Lecture 124 Coding Challenge #4

Lecture 125 String Methods Practice

Section 10: A Closer Look at Functions

Lecture 126 Section Intro

Lecture 127 Section Roadmap

Lecture 128 Default Parameters

Lecture 129 How Passing Arguments Works: Value vs. Reference

Lecture 130 First-Class and Higher-Order Functions

Lecture 131 Functions Accepting Callback Functions

Lecture 132 Functions Returning Functions

Lecture 133 The call and apply Methods

Lecture 134 The bind Method

Lecture 135 Coding Challenge #1

Lecture 136 Immediately Invoked Function Expressions (IIFE)

Lecture 137 Closures

Lecture 138 More Closure Examples

Lecture 139 Coding Challenge #2

Section 11: Working With Arrays

Lecture 140 Section Intro

Lecture 141 Section Roadmap

Lecture 142 Simple Array Methods

Lecture 143 The new at Method

Lecture 144 Looping Arrays: forEach

Lecture 145 forEach With Maps and Sets

Lecture 146 PROJECT: “Bankist” App

Lecture 147 Creating DOM Elements

Lecture 148 Coding Challenge #1

Lecture 149 Data Transformations: map, filter, reduce

Lecture 150 The map Method

Lecture 151 Computing Usernames

Lecture 152 The filter Method

Lecture 153 The reduce Method

Lecture 154 Coding Challenge #2

Lecture 155 The Magic of Chaining Methods

Lecture 156 Coding Challenge #3

Lecture 157 The find Method

Lecture 158 Implementing Login

Lecture 159 Implementing Transfers

Lecture 160 The findIndex Method

Lecture 161 some and every

Lecture 162 flat and flatMap

Lecture 163 Sorting Arrays

Lecture 164 More Ways of Creating and Filling Arrays

Lecture 165 Summary: Which Array Method to Use?

Lecture 166 Array Methods Practice

Lecture 167 Coding Challenge #4

Section 12: Numbers, Dates, Intl and Timers

Lecture 168 Section Intro

Lecture 169 Section Roadmap

Lecture 170 Converting and Checking Numbers

Lecture 171 Math and Rounding

Lecture 172 The Remainder Operator

Lecture 173 Numeric Separators

Lecture 174 Working with BigInt

Lecture 175 Creating Dates

Lecture 176 Adding Dates to “Bankist” App

Lecture 177 Operations With Dates

Lecture 178 Internationalizing Dates (Intl)

Lecture 179 Internationalizing Numbers (Intl)

Lecture 180 Timers: setTimeout and setInterval

Lecture 181 Implementing a Countdown Timer

Section 13: Advanced DOM and Events

Lecture 182 Section Intro

Lecture 183 Section Roadmap

Lecture 184 PROJECT: “Bankist” Website

Lecture 185 How the DOM Really Works

Lecture 186 Selecting, Creating, and Deleting Elements

Lecture 187 Styles, Attributes and Classes

Lecture 188 Implementing Smooth Scrolling

Lecture 189 Types of Events and Event Handlers

Lecture 190 Event Propagation: Bubbling and Capturing

Lecture 191 Event Propagation in Practice

Lecture 192 Event Delegation: Implementing Page Navigation

Lecture 193 DOM Traversing

Lecture 194 Building a Tabbed Component

Lecture 195 Passing Arguments to Event Handlers

Lecture 196 Implementing a Sticky Navigation: The Scroll Event

Lecture 197 A Better Way: The Intersection Observer API

Lecture 198 Revealing Elements on Scroll

Lecture 199 Lazy Loading Images

Lecture 200 Building a Slider Component: Part 1

Lecture 201 Building a Slider Component: Part 2

Lecture 202 Lifecycle DOM Events

Lecture 203 Efficient Script Loading: defer and async

Section 14: Object-Oriented Programming (OOP) With JavaScript

Lecture 204 Section Intro

Lecture 205 Section Roadmap

Lecture 206 What is Object-Oriented Programming?

Lecture 207 OOP in JavaScript

Lecture 208 Constructor Functions and the new Operator

Lecture 209 Prototypes

Lecture 210 Prototypal Inheritance and The Prototype Chain

Lecture 211 Prototypal Inheritance on Built-In Objects

Lecture 212 Coding Challenge #1

Lecture 213 ES6 Classes

Lecture 214 Setters and Getters

Lecture 215 Static Methods

Lecture 216 Object.create

Lecture 217 Coding Challenge #2

Lecture 218 Inheritance Between “Classes”: Constructor Functions

Lecture 219 Coding Challenge #3

Lecture 220 Inheritance Between “Classes”: ES6 Classes

Lecture 221 Inheritance Between “Classes”: Object.create

Lecture 222 Another Class Example

Lecture 223 Encapsulation: Protected Properties and Methods

Lecture 224 Encapsulation: Private Class Fields and Methods

Lecture 225 Chaining Methods

Lecture 226 ES6 Classes Summary

Lecture 227 Coding Challenge #4

Section 15: Mapty App: OOP, Geolocation, External Libraries, and More!

Lecture 228 Section Intro

Lecture 229 Section Roadmap

Lecture 230 Project Overview

Lecture 231 How to Plan a Web Project

Lecture 232 Using the Geolocation API

Lecture 233 Displaying a Map Using Leaflet Library

Lecture 234 Displaying a Map Marker

Lecture 235 Rendering Workout Input Form

Lecture 236 Project Architecture

Lecture 237 Refactoring for Project Architecture

Lecture 238 Managing Workout Data: Creating Classes

Lecture 239 Creating a New Workout

Lecture 240 Rendering Workouts

Lecture 241 Move to Marker On Click

Lecture 242 Working with localStorage

Lecture 243 Final Considerations

Section 16: Asynchronous JavaScript: Promises, Async/Await, and AJAX

Lecture 244 Section Intro

Lecture 245 Section Roadmap

Lecture 246 Asynchronous JavaScript, AJAX and APIs

Lecture 247 IMPORTANT: API URL Change

Lecture 248 Our First AJAX Call: XMLHttpRequest

Lecture 249 [OPTIONAL] How the Web Works: Requests and Responses

Lecture 250 Welcome to Callback Hell

Lecture 251 Promises and the Fetch API

Lecture 252 Consuming Promises

Lecture 253 Chaining Promises

Lecture 254 Handling Rejected Promises

Lecture 255 Throwing Errors Manually

Lecture 256 Coding Challenge #1

Lecture 257 Asynchronous Behind the Scenes: The Event Loop

Lecture 258 The Event Loop in Practice

Lecture 259 Building a Simple Promise

Lecture 260 Promisifying the Geolocation API

Lecture 261 Coding Challenge #2

Lecture 262 Consuming Promises with Async/Await

Lecture 263 Error Handling With try…catch

Lecture 264 Returning Values from Async Functions

Lecture 265 Running Promises in Parallel

Lecture 266 Other Promise Combinators: race, allSettled and any

Lecture 267 Coding Challenge #3

Section 17: Modern JavaScript Development: Modules, Tooling, and Functional

Lecture 268 Section Intro

Lecture 269 Section Roadmap

Lecture 270 An Overview of Modern JavaScript Development

Lecture 271 An Overview of Modules in JavaScript

Lecture 272 Exporting and Importing in ES6 Modules

Lecture 273 Top-Level await (ES2022)

Lecture 274 The Module Pattern

Lecture 275 CommonJS Modules

Lecture 276 A Brief Introduction to the Command Line

Lecture 277 Introduction to NPM

Lecture 278 Bundling With Parcel and NPM Scripts

Lecture 279 Configuring Babel and Polyfilling

Lecture 280 Review: Writing Clean and Modern JavaScript

Lecture 281 Let’s Fix Some Bad Code: Part 1

Lecture 282 Declarative and Functional JavaScript Principles

Lecture 283 Let’s Fix Some Bad Code: Part 2

Section 18: Forkify App: Building a Modern Application

Lecture 284 Section Intro

Lecture 285 Section Roadmap

Lecture 286 Project Overview and Planning (I)

Lecture 287 Latest Code Updates (Parcel v2 and more)

Lecture 288 Loading a Recipe from API

Lecture 289 Rendering the Recipe

Lecture 290 Listening For load and hashchange Events

Lecture 291 The MVC Architecture

Lecture 292 Refactoring for MVC

Lecture 293 Helpers and Configuration Files

Lecture 294 Event Handlers in MVC: Publisher-Subscriber Pattern

Lecture 295 Implementing Error and Success Messages

Lecture 296 Implementing Search Results – Part 1

Lecture 297 Implementing Search Results – Part 2

Lecture 298 Implementing Pagination – Part 1

Lecture 299 Implementing Pagination – Part 2

Lecture 300 Project Planning II

Lecture 301 Updating Recipe Servings

Lecture 302 Developing a DOM Updating Algorithm

Lecture 303 Implementing Bookmarks – Part 1

Lecture 304 Implementing Bookmarks – Part 2

Lecture 305 Storing Bookmarks With localStorage

Lecture 306 Project Planning III

Lecture 307 Uploading a New Recipe – Part 1

Lecture 308 Uploading a New Recipe – Part 2

Lecture 309 Uploading a New Recipe – Part 3

Lecture 310 Wrapping Up: Final Considerations

Section 19: Setting Up Git and Deployment

Lecture 311 Section Intro

Lecture 312 Section Roadmap

Lecture 313 Simple Deployment With Netlify

Lecture 314 Setting Up Git and GitHub

Lecture 315 Git Fundamentals

Lecture 316 Pushing to GitHub

Lecture 317 Setting Up Continuous Integration With Netlify

Section 20: The End!

Lecture 318 Where to Go from Here

Lecture 319 My Other Courses + Updates

Section 21: [LEGACY] Access the Old Course

Lecture 320 Access the Old Course

Take this course if you want to gain a true and deep understanding of JavaScript,Take this course if you have been trying to learn JavaScript but: 1) still don’t really understand JavaScript, or 2) still don’t feel confident to code real apps,Take this course if you’re interested in using a library/framework like React, Angular, Vue or Node in the future,Take this course if you already know JavaScript and are looking for an advanced course. This course includes expert topics!,Take this course if you want to get started with programming: JavaScript is a great first language!

Course Information:

Udemy | English | 69h 0m | 36.99 GB
Created by: Jonas Schmedtmann

You Can See More Courses in the Developer >> Greetings from

New Courses

Scroll to Top