The Complete Javascript

The modern JavaScript course for everyone! Master JavaScript with projects, challenges and theory. Many courses in one!

Last updated 2022-01-10 | 4.7

- 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

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 2021 and beyond: NPM
Parcel
Babel and ES6 modules
Practice your skills with 50+ challenges and assignments (solutions included)
Get friendly support in the Q&A area
Design your unique learning path according to your goals: course pathways

* Requirements

* 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.

Description

  • 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 2021 and beyond: NPM, Parcel, Babel and ES6 modules
  • Practice your skills with 50+ challenges and assignments (solutions included)
  • Get friendly support in the Q&A area
  • Design your unique learning path according to your goals: course pathways

Course content

21 sections • 319 lectures

Course Structure and Projects Preview 05:25

Watch Before You Start! Preview 06:09

Read Before You Start! Preview 00:41

Migration Guide to v2 + Old Course Preview 02:09

Setting Up Our Code Editor Preview 08:23

Section Intro Preview 00:53

Hello World! Preview 05:57

A Brief Introduction to JavaScript Preview 11:18

Linking a JavaScript File Preview 15:55

Values and Variables Preview 16:05

Practice Assignments Preview 00:23

Data Types Preview 19:19

let, const and var Preview 09:58

Basic Operators Preview 19:31

Operator Precedence Preview 11:19

Coding Challenge #1 Preview 10:28

Strings and Template Literals Preview 10:57

Taking Decisions: if / else Statements Preview 12:50

Coding Challenge #2 Preview 06:21

Type Conversion and Coercion Preview 16:40

Truthy and Falsy Values Preview 10:03

Equality Operators: == vs. === Preview 15:41

Boolean Logic Preview 08:30

Logical Operators Preview 10:37

Coding Challenge #3 Preview 15:07

The switch Statement Preview 13:10

Statements and Expressions Preview 06:08

The Conditional (Ternary) Operator Preview 10:02

Coding Challenge #4 Preview 09:11

JavaScript Releases: ES5, ES6+ and ESNext Preview 14:19

Section Intro Preview 00:36

Activating Strict Mode Preview 10:27

Functions Preview 19:08

Function Declarations vs. Expressions Preview 10:39

Arrow Functions Preview 09:52

Functions Calling Other Functions Preview 10:07

Reviewing Functions Preview 15:37

Coding Challenge #1 Preview 18:12

Introduction to Arrays Preview 21:34

Basic Array Operations (Methods) Preview 12:52

Coding Challenge #2 Preview 09:36

Introduction to Objects Preview 06:08

Dot vs. Bracket Notation Preview 19:21

Object Methods Preview 23:04

Coding Challenge #3 Preview 12:58

Iteration: The for Loop Preview 11:11

Looping Arrays, Breaking and Continuing Preview 22:02

Looping Backwards and Loops in Loops Preview 11:53

The while Loop Preview 11:52

Coding Challenge #4 Preview 15:35

Section Intro Preview 00:39

Section Roadmap Preview 00:22

Setting up Prettier and VS Code Preview 16:22

Installing Node.js and Setting Up a Dev Environment Preview 11:32

Learning How to Code Preview 17:42

How to Think Like a Developer: Become a Problem Solver! Preview 10:53

Using Google, StackOverflow and MDN Preview 26:36

Debugging (Fixing Errors) Preview 05:09

Debugging with the Console and Breakpoints Preview 19:25

Coding Challenge #1 Preview 15:24

Section Intro Preview 00:40

Basic HTML Structure and Elements Preview 09:32

Attributes, Classes and IDs Preview 13:09

Basic Styling with CSS Preview 12:00

Introduction to the CSS Box Model Preview 20:57

Section Intro Preview 00:49

Section Roadmap Preview 00:29

PROJECT #1: Guess My Number! Preview 08:47

What's the DOM and DOM Manipulation Preview 06:48

Selecting and Manipulating Elements Preview 08:22

Handling Click Events Preview 12:50

Implementing the Game Logic Preview 19:33

Manipulating CSS Styles Preview 08:17

Coding Challenge #1 Preview 11:40

Implementing Highscores Preview 07:47

Refactoring Our Code: The DRY Principle Preview 15:05

PROJECT #2: Modal Window Preview 13:21

Working With Classes Preview 16:55

Handling an "Esc" Keypress Event Preview 14:11

PROJECT #3: Pig Game Preview 17:08

Rolling the Dice Preview 15:58

Switching the Active Player Preview 15:16

Holding Current Score Preview 24:55

Resetting the Game Preview 15:38

Section Intro Preview 01:31

Section Roadmap Preview 00:30

An High-Level Overview of JavaScript Preview 12:11

The JavaScript Engine and Runtime Preview 13:47

Execution Contexts and The Call Stack Preview 17:45

Scope and The Scope Chain Preview 25:37

Scoping in Practice Preview 21:13

Variable Environment: Hoisting and The TDZ Preview 11:00

Hoisting and TDZ in Practice Preview 14:42

The this Keyword Preview 06:30

The this Keyword in Practice Preview 13:11

Regular Functions vs. Arrow Functions Preview 18:04

Primitives vs. Objects (Primitive vs. Reference Types) Preview 16:06

Primitives vs. Objects in Practice Preview 14:57

Section Intro Preview 00:53

Section Roadmap Preview 00:22

Destructuring Arrays Preview 19:33

Destructuring Objects Preview 19:46

The Spread Operator (...) Preview 21:26

Rest Pattern and Parameters Preview 19:01

Short Circuiting (&& and ||) Preview 15:55

The Nullish Coalescing Operator (??) Preview 03:32

Logical Assignment Operators Preview 11:39

Coding Challenge #1 Preview 14:57

Looping Arrays: The for-of Loop Preview 07:20

Enhanced Object Literals Preview 07:02

Optional Chaining (?.) Preview 16:10

Looping Objects: Object Keys, Values, and Entries Preview 10:09

Coding Challenge #2 Preview 14:30

Sets Preview 13:18

Maps: Fundamentals Preview 14:03

Maps: Iteration Preview 12:41

Summary: Which Data Structure to Use? Preview 09:40

Coding Challenge #3 Preview 09:37

Working With Strings - Part 1 Preview 16:53

Working With Strings - Part 2 Preview 21:45

Working With Strings - Part 3 Preview 21:41

Coding Challenge #4 Preview 15:15

String Methods Practice Preview 16:36

Section Intro Preview 00:48

Section Roadmap Preview 00:22

Default Parameters Preview 09:17

How Passing Arguments Works: Value vs. Reference Preview 13:36

First-Class and Higher-Order Functions Preview 05:24

Functions Accepting Callback Functions Preview 15:20

Functions Returning Functions Preview 06:36

The call and apply Methods Preview 16:51

The bind Method Preview 21:33

Coding Challenge #1 Preview 18:47

Immediately Invoked Function Expressions (IIFE) Preview 07:52

Closures Preview 19:48

More Closure Examples Preview 15:30

Coding Challenge #2 Preview 05:25

Section Intro Preview 00:53

Section Roadmap Preview 00:29

Simple Array Methods Preview 16:37

The new at Method Preview 06:04

Looping Arrays: forEach Preview 13:46

forEach With Maps and Sets Preview 05:32

PROJECT: "Bankist" App Preview 09:48

Creating DOM Elements Preview 18:44

Coding Challenge #1 Preview 08:31

Data Transformations: map, filter, reduce Preview 04:40

The map Method Preview 15:40

Computing Usernames Preview 12:14

The filter Method Preview 06:19

The reduce Method Preview 20:57

Coding Challenge #2 Preview 09:56

The Magic of Chaining Methods Preview 19:39

Coding Challenge #3 Preview 03:57

The find Method Preview 06:47

Implementing Login Preview 24:18

Implementing Transfers Preview 20:54

The findIndex Method Preview 12:34

some and every Preview 15:11

flat and flatMap Preview 09:32

Sorting Arrays Preview 21:55

More Ways of Creating and Filling Arrays Preview 20:33

Summary: Which Array Method to Use? Preview 06:24

Array Methods Practice Preview 32:21

Coding Challenge #4 Preview 23:47

Section Intro Preview 00:50

Section Roadmap Preview 00:22

Converting and Checking Numbers Preview 16:46

Math and Rounding Preview 18:14

The Remainder Operator Preview 10:56

Numeric Separators Preview 06:57

Working with BigInt Preview 11:18

Creating Dates Preview 12:55

Adding Dates to "Bankist" App Preview 22:21

Operations With Dates Preview 15:27

Internationalizing Dates (Intl) Preview 17:18

Internationalizing Numbers (Intl) Preview 19:06

Timers: setTimeout and setInterval Preview 13:53

Implementing a Countdown Timer Preview 28:31

Section Intro Preview 01:04

Section Roadmap Preview 00:22

PROJECT: "Bankist" Website Preview 08:49

How the DOM Really Works Preview 10:36

Selecting, Creating, and Deleting Elements Preview 20:28

Styles, Attributes and Classes Preview 21:54

Implementing Smooth Scrolling Preview 15:56

Types of Events and Event Handlers Preview 10:33

Event Propagation: Bubbling and Capturing Preview 05:03

Event Propagation in Practice Preview 17:46

Event Delegation: Implementing Page Navigation Preview 18:48

DOM Traversing Preview 14:35

Building a Tabbed Component Preview 24:08

Passing Arguments to Event Handlers Preview 18:43

Implementing a Sticky Navigation: The Scroll Event Preview 07:55

A Better Way: The Intersection Observer API Preview 24:00

Revealing Elements on Scroll Preview 12:39

Lazy Loading Images Preview 18:30

Building a Slider Component: Part 1 Preview 23:16

Building a Slider Component: Part 2 Preview 19:35

Lifecycle DOM Events Preview 09:26

Efficient Script Loading: defer and async Preview 13:30

Section Intro Preview 01:07

Section Roadmap Preview 00:22

What is Object-Oriented Programming? Preview 20:55

OOP in JavaScript Preview 10:08

Constructor Functions and the new Operator Preview 14:19

Prototypes Preview 14:36

Prototypal Inheritance and The Prototype Chain Preview 10:58

Prototypal Inheritance on Built-In Objects Preview 14:46

Coding Challenge #1 Preview 07:27

ES6 Classes Preview 12:57

Setters and Getters Preview 13:15

Static Methods Preview 06:24

Object.create Preview 10:56

Coding Challenge #2 Preview 06:00

Inheritance Between "Classes": Constructor Functions Preview 21:03

Coding Challenge #3 Preview 10:37

Inheritance Between "Classes": ES6 Classes Preview 10:46

Inheritance Between "Classes": Object.create Preview 08:53

Another Class Example Preview 10:44

Encapsulation: Protected Properties and Methods Preview 06:47

Encapsulation: Private Class Fields and Methods Preview 16:11

Chaining Methods Preview 04:43

ES6 Classes Summary Preview 07:11

Coding Challenge #4 Preview 08:54

Section Intro Preview 00:58

Section Roadmap Preview 00:27

Project Overview Preview 05:02

How to Plan a Web Project Preview 17:41

Using the Geolocation API Preview 08:16

Displaying a Map Using Leaflet Library Preview 13:48

Displaying a Map Marker Preview 19:54

Rendering Workout Input Form Preview 16:42

Project Architecture Preview 09:28

Refactoring for Project Architecture Preview 24:05

Managing Workout Data: Creating Classes Preview 16:18

Creating a New Workout Preview 34:06

Rendering Workouts Preview 24:19

Move to Marker On Click Preview 16:32

Working with localStorage Preview 25:31

Final Considerations Preview 05:41

Section Intro Preview 00:55

Section Roadmap Preview 00:22

Asynchronous JavaScript, AJAX and APIs Preview 17:57

IMPORTANT: API URL Change Preview 00:13

Our First AJAX Call: XMLHttpRequest Preview 19:10

[OPTIONAL] How the Web Works: Requests and Responses Preview 13:38

Welcome to Callback Hell Preview 13:52

Promises and the Fetch API Preview 09:25

Consuming Promises Preview 09:24

Chaining Promises Preview 09:13

Handling Rejected Promises Preview 16:13

Throwing Errors Manually Preview 15:24

Coding Challenge #1 Preview 16:31

Asynchronous Behind the Scenes: The Event Loop Preview 17:53

The Event Loop in Practice Preview 09:15

Building a Simple Promise Preview 20:17

Promisifying the Geolocation API Preview 13:26

Coding Challenge #2 Preview 15:53

Consuming Promises with Async/Await Preview 15:06

Error Handling With try...catch Preview 10:22

Returning Values from Async Functions Preview 14:39

Running Promises in Parallel Preview 10:56

Other Promise Combinators: race, allSettled and any Preview 13:19

Coding Challenge #3 Preview 17:30

Section Intro Preview 00:47

Section Roadmap Preview 00:22

An Overview of Modern JavaScript Development Preview 06:38

An Overview of Modules in JavaScript Preview 15:01

Exporting and Importing in ES6 Modules Preview 22:38

Top-Level await (ES2022) Preview 14:44

The Module Pattern Preview 10:19

CommonJS Modules Preview 04:24

A Brief Introduction to the Command Line Preview 12:27

Introduction to NPM Preview 18:40

Bundling With Parcel and NPM Scripts Preview 21:39

Configuring Babel and Polyfilling Preview 18:03

Review: Writing Clean and Modern JavaScript Preview 10:26

Let's Fix Some Bad Code: Part 1 Preview 23:20

Declarative and Functional JavaScript Principles Preview 12:25

Let's Fix Some Bad Code: Part 2 Preview 38:09

Section Intro Preview 00:56

Section Roadmap Preview 00:27

Project Overview and Planning (I) Preview 14:21

Loading a Recipe from API Preview 24:11

Rendering the Recipe Preview 22:23

Listening For load and hashchange Events Preview 11:02

The MVC Architecture Preview 16:32

Refactoring for MVC Preview 38:53

Helpers and Configuration Files Preview 21:23

Event Handlers in MVC: Publisher-Subscriber Pattern Preview 15:08

Implementing Error and Success Messages Preview 11:34

Implementing Search Results - Part 1 Preview 25:46

Implementing Search Results - Part 2 Preview 28:15

Implementing Pagination - Part 1 Preview 12:18

Implementing Pagination - Part 2 Preview 37:05

Project Planning II Preview 03:13

Updating Recipe Servings Preview 26:40

Developing a DOM Updating Algorithm Preview 34:22

Implementing Bookmarks - Part 1 Preview 25:59

Implementing Bookmarks - Part 2 Preview 18:31

Storing Bookmarks With localStorage Preview 18:22

Project Planning III Preview 02:08

Uploading a New Recipe - Part 1 Preview 17:43

Uploading a New Recipe - Part 2 Preview 40:37

Uploading a New Recipe - Part 3 Preview 19:58

Wrapping Up: Final Considerations Preview 14:45

Section Intro Preview 00:44

Section Roadmap Preview 00:22

Simple Deployment With Netlify Preview 11:18

Setting Up Git and GitHub Preview 07:39

Git Fundamentals Preview 19:36

Pushing to GitHub Preview 09:31

Setting Up Continuous Integration With Netlify Preview 10:06

Where to Go from Here Preview 03:00

My Other Courses + Updates Preview 01:00