The Complete JavaScript Course 2026: From Zero to Expert!
-
Welcome, Welcome, Welcome!
-
JavaScript Fundamentals – Part 1Section Intro0sHello World!0sA Brief Introduction to JavaScript0sLinking a JavaScript File0sValues and Variables0sPractice AssignmentsData Types0slet, const and var0sBasic Operators0sOperator Precedence0sA Note About ChallengesCHALLENGE #1CHALLENGE #1: Video Solution0sStrings and Template Literals0sTaking Decisions: if / else Statements0sCHALLENGE #2CHALLENGE #2: Video Solution0sType Conversion and Coercion0sTruthy and Falsy Values0sEquality Operators: == vs. ===0sBoolean Logic0sLogical Operators0sCHALLENGE #3CHALLENGE #3: Video Solution0sThe switch Statement0sThe Conditional (Ternary) Operator0sCHALLENGE #4CHALLENGE #4: Video Solution0sJavaScript Releases: ES5, ES6+ and ESNext0s
-
JavaScript Fundamentals – Part 2Section Intro0sActivating Strict Mode0sFunctions0sFunction Declarations vs. Expressions0sArrow Functions0sFunctions Calling Other Functions0sReviewing Functions0sCHALLENGE #1CHALLENGE #1: Video Solution0sIntroduction to Arrays0sBasic Array Operations (Methods)0sCHALLENGE #2CHALLENGE #2: Video Solution0sIntroduction to Objects0sDot vs. Bracket Notation0sObject Methods0sCHALLENGE #3CHALLENGE #3: Video Solution0sIteration: The for Loop0sLooping Arrays, Breaking and Continuing0sLooping Backwards and Loops in Loops0sThe while Loop0sCHALLENGE #4CHALLENGE #4: Video Solution0s
-
How to Navigate This Course
-
Developer Skills & Editor SetupSection Intro0sSection RoadmapSetting up Prettier and VS Code0sInstalling Node.js and Setting Up a Dev Environment0sLearning How to Code0sHow to Think Like a Developer: Become a Problem Solver!0sUsing Google, StackOverflow and MDN0sDebugging (Fixing Errors)0sDebugging with the Console and Breakpoints0sCHALLENGE #10s
-
[OPTIONAL] HTML & CSS Crash Course
-
JavaScript in the Browser: DOM and Events [PROJECT]Section Intro0sSection RoadmapPROJECT #1: Guess My Number!0sWhat’s the DOM and DOM Manipulation0sSelecting and Manipulating Elements0sHandling Click Events0sImplementing the Game Logic0sManipulating CSS Styles0sCHALLENGE #10sImplementing Highscores0sRefactoring Our Code: The DRY Principle0sPROJECT #2: Modal Window0sWorking With Classes0sHandling an “Esc” Keypress Event0sPROJECT #3: Pig Game0sRolling the Dice0sSwitching the Active Player0sHolding Current Score0sResetting the Game0s
-
How JavaScript Works Behind the ScenesSection Intro0sSection RoadmapAn High-Level Overview of JavaScript0sThe JavaScript Engine and Runtime0sExecution Contexts and The Call Stack0sScope and The Scope Chain0sScoping in Practice0sVariable Environment: Hoisting and The TDZ0sHoisting and TDZ in Practice0sThe this Keyword0sThe this Keyword in Practice0sRegular Functions vs. Arrow Functions0sPrimitives vs. Objects (Primitive vs. Reference Types)0sPrimitives vs. Objects in Practice0s
-
Data Structures, Modern Operators and StringsSection Intro0sSection RoadmapDestructuring Arrays0sPractice AssignmentsDestructuring Objects0sThe Spread Operator (…)0sRest Pattern and Parameters0sShort Circuiting (&& and ||)0sThe Nullish Coalescing Operator (??)0sLogical Assignment Operators0sCHALLENGE #10sLooping Arrays: The for-of Loop0sEnhanced Object Literals0sOptional Chaining (?.)0sLooping Objects: Object Keys, Values, and Entries0sCHALLENGE #20sSets0sMaps: Fundamentals0sMaps: Iteration0sSummary: Which Data Structure to Use?0sCHALLENGE #30sWorking With Strings – Part 10sWorking With Strings – Part 20sWorking With Strings – Part 30sCHALLENGE #40sString Methods Practice0s
-
A Closer Look at FunctionsSection Intro0sSection RoadmapDefault Parameters0sHow Passing Arguments Works: Value vs. Reference0sFirst-Class and Higher-Order Functions0sFunctions Accepting Callback Functions0sFunctions Returning Functions0sThe call and apply Methods0sThe bind Method0sCHALLENGE #10sImmediately Invoked Function Expressions (IIFE)0sClosures0sMore Closure Examples0sCHALLENGE #20s
-
Working With Arrays [PROJECT]Section Intro0sSection RoadmapSimple Array Methods0sThe New at Method0sLooping Arrays: forEach0sforEach With Maps and Sets0sPROJECT: “Bankist” App0sCreating DOM Elements0sCHALLENGE #10sData Transformations: map, filter, reduce0sThe map Method0sComputing Usernames0sThe filter Method0sThe reduce Method0sCHALLENGE #20sThe Magic of Chaining Methods0sCHALLENGE #30sThe find Method0sImplementing Login0sImplementing Transfers0sThe findIndex Method0ssome and every0sflat and flatMap0sSorting Arrays0sMore Ways of Creating and Filling Arrays0sSummary: Which Array Method to Use?0sArray Methods Practice0sCHALLENGE #40s
-
Numbers, Dates, Intl and Timers [PROJECT]Section Intro0sSection RoadmapConverting and Checking Numbers0sMath and Rounding0sThe Remainder Operator0sNumeric Separators0sWorking with BigInt0sCreating Dates0sAdding Dates to “Bankist” App0sOperations With Dates0sInternationalizing Dates (Intl)0sInternationalizing Numbers (Intl)0sTimers: setTimeout and setInterval0sImplementing a Countdown Timer0s
-
Advanced DOM and Events [PROJECT]Section Intro0sSection RoadmapPROJECT: “Bankist” Website0sHow the DOM Really Works0sSelecting, Creating, and Deleting Elements0sStyles, Attributes and Classes0sImplementing Smooth Scrolling0sTypes of Events and Event Handlers0sEvent Propagation: Bubbling and Capturing0sEvent Propagation in Practice0sEvent Delegation: Implementing Page Navigation0sDOM Traversing0sBuilding a Tabbed Component0sPassing Arguments to Event Handlers0sImplementing a Sticky Navigation: The Scroll Event0sA Better Way: The Intersection Observer API0sRevealing Elements on Scroll0sLazy Loading Images0sBuilding a Slider Component: Part 10sBuilding a Slider Component: Part 20sLifecycle DOM Events0sEfficient Script Loading: defer and async0s
-
Object-Oriented Programming (OOP) With JavaScriptSection Intro0sSection RoadmapWhat is Object-Oriented Programming?0sOOP in JavaScript0sConstructor Functions and the new Operator0sPrototypes0sPrototypal Inheritance and The Prototype Chain0sPrototypal Inheritance on Built-In Objects0sCHALLENGE #10sES6 Classes0sSetters and Getters0sStatic Methods0sObject.create0sCHALLENGE #20sInheritance Between “Classes”: Constructor Functions0sCHALLENGE #30sInheritance Between “Classes”: ES6 Classes0sInheritance Between “Classes”: Object.create0sAnother Class Example0sEncapsulation: Private Class Fields and Methods0sChaining Methods0sES6 Classes Summary0sCHALLENGE #40s
-
Mapty App: OOP, Geolocation, External Libraries, and More! [PROJECT]Section Intro0sSection RoadmapProject Overview0sHow to Plan a Web Project0sUsing the Geolocation API0sDisplaying a Map Using Leaflet Library0sDisplaying a Map Marker0sRendering Workout Input Form0sProject Architecture0sRefactoring for Project Architecture0sManaging Workout Data: Creating Classes0sCreating a New Workout0sRendering Workouts0sMove to Marker On Click0sWorking with localStorage0sFinal Considerations0s
-
Asynchronous JavaScript: Promises, Async/Await, and AJAXSection Intro0sSection RoadmapAsynchronous JavaScript, AJAX and APIs0sIMPORTANT: API URL ChangeOur First AJAX Call: XMLHttpRequest0s[OPTIONAL] How the Web Works: Requests and Responses0sWelcome to Callback Hell0sPromises and the Fetch API0sConsuming Promises0sChaining Promises0sHandling Rejected Promises0sThrowing Errors Manually0sCHALLENGE #10sAsynchronous Behind the Scenes: The Event Loop0sThe Event Loop in Practice0sBuilding a Simple Promise0sPromisifying the Geolocation API0sCHALLENGE #20sConsuming Promises with Async/Await0sError Handling With try…catch0sReturning Values from Async Functions0sRunning Promises in Parallel0sOther Promise Combinators: race, allSettled and any0sCHALLENGE #30s
-
Modern JavaScript Development: Modules, Tooling, and FunctionalSection Intro0sSection RoadmapAn Overview of Modern JavaScript Development0sAn Overview of Modules in JavaScript0sExporting and Importing in ES6 Modules0sTop-Level await (ES2022)0sThe Module Pattern0sCommonJS Modules0sA Brief Introduction to the Command Line0sIntroduction to NPM0sBundling With Parcel and NPM Scripts0sConfiguring Babel and Polyfilling0sReview: Writing Clean and Modern JavaScript0sLet’s Fix Some Bad Code: Part 10sDeclarative and Functional JavaScript Principles0sLet’s Fix Some Bad Code: Part 20s
-
Forkify App: Building a Modern Application [PROJECT]Section Intro0sSection RoadmapProject Overview and Planning (I)0sLatest Code Updates (IMPORTANT!)Loading a Recipe from API0sRendering the Recipe0sListening For load and hashchange Events0sThe MVC Architecture0sRefactoring for MVC0sHelpers and Configuration Files0sEvent Handlers in MVC: Publisher-Subscriber Pattern0sImplementing Error and Success Messages0sImplementing Search Results – Part 10sImplementing Search Results – Part 20sImplementing Pagination – Part 10sImplementing Pagination – Part 20sProject Planning II0sUpdating Recipe Servings0sDeveloping a DOM Updating Algorithm0sImplementing Bookmarks – Part 10sImplementing Bookmarks – Part 20sStoring Bookmarks With localStorage0sProject Planning III0sUploading a New Recipe – Part 10sUploading a New Recipe – Part 20sUploading a New Recipe – Part 30sWrapping Up: Final Considerations0s
-
Setting Up Git and Deployment
-
The End!
-
[LEGACY] Access the Old Course
The #1 bestselling JavaScript course on Xlbake!
Just updated with ES2024 and ES2025!
“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 Bartholomew
JavaScript 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 in 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 850,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 patterns
Master the JavaScript fundamentals: variables, if/else, operators, boolean logic, functions, arrays, objects, loops, strings, and more
Learn modern JavaScript (ES6+) from the beginning: arrow functions, destructuring, spread operator, default arguments, optional chaining, and more
How 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, Babel, and ES6 modules
Check 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.
Professional English captions (not the auto-generated ones)
Downloadable starter code and final code for each section
Downloadable slides for 40+ theory videos
25+ coding challenges and 25+ assignments to practice your new skills
Does any of these look like you? If so, then start this adventure today, and join me and 850,000+ other developers in the only JavaScript course that you will ever need!