JavaScript - The Complete Guide (Beginner + Advanced)

Modern JavaScript from the beginning - all the way up to JS expert level! THE must-have JavaScript resource in 2020.

Course Overview

About This Course

You’ve picked up bits of JavaScript—maybe from tutorials or copy‑pasting snippets—but it still feels like you’re guessing. When code breaks, you’re not sure what’s happening under the hood, and that makes building anything real feel frustratingly slow.

This course gives you a structured path that starts at zero and keeps going until the “why” behind JavaScript finally clicks. You’ll move through clear explanations, demos, assignments, quizzes, and lots of examples, so you’re not just watching—you’re building understanding you can reuse.

By the end, you’ll be able to write modern JavaScript confidently in real projects, debug issues with a deeper mental model, and make decisions that hold up in production—whether you’re working in the browser, using Node.js, or stepping into libraries and frameworks on the job.

What You'll Learn

You’ll cover modern JavaScript syntax plus the behind-the-scenes details (engines, prototypes, performance) that explain why your code behaves the way it does.

  • Write modern JavaScript

    Use today’s JavaScript syntax from the start, while also recognizing older patterns so you can read and work in existing codebases without getting stuck.

  • Control program flow

    Build logic with conditionals and loops, and understand how scripts are loaded and executed so your code runs when—and where—you expect it to.

  • Model data with objects

    Work fluently with arrays and objects to structure application data, transform it, and pass it through functions in a way that stays readable as projects grow.

  • Build interactive UIs

    Manipulate the DOM to update web pages dynamically, and handle a wide range of browser events (including drag & drop) to make interfaces respond to user actions.

  • Handle async + HTTP

    Write correct asynchronous code with callbacks, promises, and async/await, and send HTTP requests from JavaScript to load or submit data.

  • Ship robust JavaScript

    Apply practical techniques like code splitting and browser support strategies, and get introduced to security, performance optimization, memory leak busting, and automated testing.

Ready to get started?

See enrollment options

Prerequisites

  • No prior JavaScript knowledge is required—you’ll start from scratch.

  • Basic web development knowledge (how the web works) is recommended.

  • Basic HTML and CSS understanding helps, but it’s not required.

Who Is This Course For?

  • Beginner web students

    You’re comfortable with the idea of building for the web, but JavaScript still feels like the missing piece. You want a single path that takes you from “I’ve never coded JS” to confidently writing your own code.

  • Early JS developers

    You know the basics, but you keep hitting walls when projects get more complex. You want the deeper understanding that helps you debug faster and write code that doesn’t fall apart later.

  • Advanced JS learners

    You can build with JavaScript already, but you want the nitty-gritty details you don’t get from day-to-day coding. You’re looking to sharpen your understanding of how JavaScript works behind the scenes and level up your professional toolkit.

Curriculum Overview

Start Now

Preview the structure and pacing of this course before you begin.

  • Getting Started15 lectures55m
    • 01Introduction1:50 min
    • 02What is JavaScript?3:44 min
    • 03JavaScript in Action!8:57 min
    • 04Join our Online Learning Community0:00 min
    • 05How JavaScript Is Executed3:14 min
    • 06Dynamic vs Weakly Typed Languages3:24 min
    • 07JavaScript Runs In A Host Environment4:40 min
    • 08Course Outline - What Is In The Course?6:00 min
    • 09How To Get The Most Out Of This Course2:32 min
    • 10Using Course Resources0:00 min
    • 11JavaScript vs Java4:02 min
    • 12A Brief History Of JavaScript6:03 min
    • 13Setting Up a Development Environment11:12 min
    • 14Course FAQs0:00 min
    • 15The Academind Pro Referral Program0:00 min
  • Basics: Variables, Data Types, Operators & Functions46 lectures3h 27m
    • 01Module Introduction1:17 min
    • 02Setting Up the Project4:25 min
    • 03More on Version Control & Git0:00 min
    • 04Adding JavaScript to the Website6:42 min
    • 05Introducing Variables & Constants5:17 min
    • 06Declaring & Defining Variables7:10 min
    • 07Working with Variables & Operators6:17 min
    • 08Quiz 1: Variables & Operators0:00 min
    • 09Understanding the Starting Code1:21 min
    • 10Data Types: Numbers & Strings (Text)6:00 min
    • 11Using Constants5:11 min
    • 12More on Strings15:51 min
    • 13Quiz 2: Data Types & Constants0:00 min
    • 14Assignment - Variables, Constants, Operators & Core Data Types (Problem)3:20 min
    • 15Assignment - Variables, Constants, Operators & Core Data Types (Solution)4:57 min
    • 16Introducing Functions5:50 min
    • 17Adding A Custom Function11:22 min
    • 18Code Styles, Conventions & Syntax0:00 min
    • 19Returning Values4:31 min
    • 20The (Un)Importance of Code Order4:34 min
    • 21An Introduction to Global & Local Scope5:31 min
    • 22"Shadowed Variables"0:00 min
    • 23More about the "return" Statement2:24 min
    • 24Executing Functions "Indirectly"11:10 min
    • 25"Indirect" vs "Direct" Function Execution - Summary0:00 min
    • 26Quiz 3: Functions & Scope0:00 min
    • 27Assignment - Functions (Problem)2:37 min
    • 28Assignment - Functions (Solution)6:40 min
    • 29Converting Data Types6:14 min
    • 30Mixing Numbers & Strings0:00 min
    • 31Splitting Code into Functions5:49 min
    • 32Connecting all Buttons to Functions7:43 min
    • 33Working with Code Comments4:09 min
    • 34More Operators!6:39 min
    • 35More Core Data Types!4:31 min
    • 36Using Arrays8:53 min
    • 37Creating Objects6:02 min
    • 38Accessing Object Data2:51 min
    • 39Quiz 4: Arrays & Objects0:00 min
    • 40Adding a Re-Usable Function That Uses Objects5:24 min
    • 41undefined, null & NaN6:20 min
    • 42The "typeof" Operator3:11 min
    • 43Quiz 5: "undefined", "null" & "NaN"0:00 min
    • 44Importing Scripts Correctly with "defer" & "async"14:37 min
    • 45Wrap Up2:13 min
    • 46Useful Resources & Links0:00 min
  • Efficient Development & Debugging19 lectures58m
    • 01Module Introduction1:28 min
    • 02Efficient Development & Debugging - An Overview3:18 min
    • 03Configuring the IDE Look & Feel2:25 min
    • 04Using Shortcuts4:12 min
    • 05Working with Auto-Completion & IDE Hints4:34 min
    • 06Installing IDE Extensions2:04 min
    • 07Tweaking Editor Settings2:15 min
    • 08Utilizing Different IDE Views1:41 min
    • 09Finding Help & Working with MDN5:53 min
    • 10The ECMAScript Standard0:00 min
    • 11How to "google" Correctly1:44 min
    • 12Debugging JavaScript - An Overview3:17 min
    • 13An Error Message! No Reason To Panic!4:46 min
    • 14Using console.log() to look "into the Code"3:49 min
    • 15Next-Level Debugging with the Chrome Devtools & Breakpoints8:20 min
    • 16Testing Code Changes Directly in the Devtools2:05 min
    • 17Debugging Code directly Inside VS Code4:55 min
    • 18Wrap Up1:22 min
    • 19Useful Resources & Links0:00 min
  • Working with Control Structures (if Statements, Loops, Error Handling)44 lectures4h 1m
    • 01Module Introduction2:26 min
    • 02Introducing "if" Statements & Boolean (Comparison) Operators9:26 min
    • 03Using "if" Statements7:23 min
    • 04Working with "if", "else" and "else-if"5:10 min
    • 05Beware When Comparing Objects & Arrays for Equality!4:06 min
    • 06The Logical AND and OR Operators9:10 min
    • 07Understanding Operator Precedence7:20 min
    • 08Quiz 6: if & Boolean Operators - The Basics0:00 min
    • 09Beyond true/ false: "Truthy" and "Falsy" Values7:30 min
    • 10Coercion vs Conversion0:00 min
    • 11Quiz 7: Falsy and Truthy Values0:00 min
    • 12Setting Up a Bigger Example Project (The "Monster Killer")2:59 min
    • 13Adding an "Attack" Function7:57 min
    • 14Using "if" Statements for Checking the Win-Condition9:17 min
    • 15Adding More "if" Statements & A "Strong Attack" Functionality7:41 min
    • 16Time for a "Heal Player" Functionality!10:15 min
    • 17Controlling the Conditional Bonus Life (Without Boolean Operators!)5:59 min
    • 18Adding a "Reset Game" Functionality6:00 min
    • 19Validating User Input6:17 min
    • 20Utilizing Global Constants as Identifiers in Conditional Code3:20 min
    • 21Adding a Conditional Battle Log16:37 min
    • 22Introducing the Ternary Operator7:31 min
    • 23A Bit of Theory: Statements vs Expressions1:40 min
    • 24Logical Operator "Tricks" & Shorthands12:58 min
    • 25Quiz 8: Logical Operators & How They Work0:00 min
    • 26Working with the "switch-case" Statement7:10 min
    • 27Introducing Loops6:40 min
    • 28The "for" Loop7:38 min
    • 29The "for-of" Loop5:16 min
    • 30The "for-in" Loop6:49 min
    • 31The "while" & "do-while" Loops8:00 min
    • 32Quiz 9: Loops - Basics0:00 min
    • 33Assignment - Control Structures (Problem)2:47 min
    • 34Assignment - Control Structures (Solution)9:55 min
    • 35Controlling Loops with "break"8:11 min
    • 36Controlling Iterations with "continue"2:21 min
    • 37More Control with Labeled Statements6:26 min
    • 38Quiz 10: break & continue0:00 min
    • 39Error Handling with "try-catch" - An Introduction2:25 min
    • 40Throwing Custom Errors5:16 min
    • 41Working with "try-catch" to Catch & Handle Errors8:14 min
    • 42Quiz 11: Error Handling0:00 min
    • 43Wrap Up3:21 min
    • 44Useful Resources & Links0:00 min
  • Behind the Scenes & The (Weird) Past (ES3, ES5) & Present (ES6+) of JavaScript13 lectures1h 31m
    • 01Module Introduction1:43 min
    • 02ES5 vs ES6+ ("Next Gen JS") - Evolution of JavaScript8:14 min
    • 03var vs let & const - Introducing "Block Scope"14:32 min
    • 04Understanding "Hoisting"4:07 min
    • 05Strict Mode & Writing Good Code5:46 min
    • 06Quiz 12: "JavaScript Specialties"0:00 min
    • 07How Code is Parsed & Compiled8:16 min
    • 08Inside the JavaScript Engine - How the Code Executes15:59 min
    • 09[DEEP DIVE] JavaScript Language vs Browser APIs0:00 min
    • 10Primitive vs Reference Values19:24 min
    • 11Garbage Collection & Memory Management12:00 min
    • 12Wrap Up1:55 min
    • 13Useful Resources & Links0:00 min
  • More on Functions25 lectures1h 49m
    • 01Module Introduction1:31 min
    • 02Recapping Functions Knowledge - What We Know Thus Far1:52 min
    • 03Parameters vs Arguments0:00 min
    • 04Functions vs Methods5:46 min
    • 05Functions are Objects!2:47 min
    • 06Function Expressions: Storing Functions in Variables5:12 min
    • 07Function Expressions vs Function Declarations2:47 min
    • 08Anonymous Functions5:54 min
    • 09Working on the Project: Adding User Choices to the Game7:44 min
    • 10Implementing the Core Game Logic7:20 min
    • 11Introducing Arrow Functions8:41 min
    • 12Quiz 13: Creating Functions0:00 min
    • 13Outputting Messages to the User3:53 min
    • 14Default Arguments in Functions10:45 min
    • 15Introducing Rest Parameters ("Rest Operator")8:57 min
    • 16Creating Functions Inside of Functions3:04 min
    • 17Understanding Callback Functions6:09 min
    • 18Assignment - Functions (Problem)3:16 min
    • 19Assignment - Functions (Solution)8:19 min
    • 20Working with "bind()"8:39 min
    • 21Adding bind() to the Calculator Project3:46 min
    • 22Quiz 14: Functions - Advanced0:00 min
    • 23call() and apply()1:18 min
    • 24Wrap Up2:10 min
    • 25Useful Resources & Links0:00 min
  • Working with the DOM (Browser HTML Code) in JavaScript41 lectures3h 43m
    • 01Module Introduction1:48 min
    • 02What's the "DOM"?6:00 min
    • 03Document and Window Object6:20 min
    • 04Understanding the DOM and how it's created7:07 min
    • 05Nodes & Elements - Querying the DOM Overview5:55 min
    • 06Selecting Elements in the DOM9:54 min
    • 07Summary: Node Query Methods0:00 min
    • 08Exploring and Changing DOM Properties7:37 min
    • 09Attributes vs Properties8:58 min
    • 10Selecting Multiple Elements & Summary5:13 min
    • 11Quiz 15: DOM Basics0:00 min
    • 12Assignment - DOM Querying (Problem)2:10 min
    • 13Assignment - DOM Querying (Solution)5:41 min
    • 14Traversing the DOM - Overview6:22 min
    • 15Traversing Child Nodes9:15 min
    • 16Using parentNode & parentElement5:01 min
    • 17Selecting Sibling Elements4:05 min
    • 18DOM Traversal vs Query Methods4:35 min
    • 19Styling DOM Elements12:18 min
    • 20Creating Elements with JS - Overview2:42 min
    • 21Adding Elements via HTML in Code7:42 min
    • 22Adding Elements via createElement()5:42 min
    • 23Inserting DOM Elements8:15 min
    • 24Cloning DOM Nodes1:45 min
    • 25Live Node Lists vs Static Node Lists4:55 min
    • 26Removing Elements1:56 min
    • 27Insertion & Removal Method Summary2:38 min
    • 28Summary: Insert, Replace, Remove0:00 min
    • 29Setting Up the Practice Project2:16 min
    • 30Selecting the Modal and "Add" Button8:58 min
    • 31Opening a Modal by Changing CSS Classes5:01 min
    • 32Controlling the Backdrop8:04 min
    • 33Fetching and Validating User Input8:06 min
    • 34Creating a Movie in JavaScript & Clearing the Input4:00 min
    • 35Rendering Movie Items on the Screen8:23 min
    • 36Deleting Movie Elements9:12 min
    • 37Showing & Hiding the "Are you sure?" Dialog7:08 min
    • 38Starting with the Confirmation Logic4:29 min
    • 39Finishing the App11:45 min
    • 40Wrap Up1:55 min
    • 41Useful Resources & Links0:00 min
  • More on Arrays & Iterables31 lectures2h 17m
    • 01Module Introduction1:08 min
    • 02What are "Iterables" and "Array-like Objects"?2:11 min
    • 03Creating Arrays8:55 min
    • 04Which Data Can You Store In Arrays?3:47 min
    • 05push(), pop(), unshift(), shift() - Adding & Removing Elements6:59 min
    • 06The splice() Method5:37 min
    • 07Selecting Ranges & Creating Copies with slice()6:06 min
    • 08arrays-it-08-concat2:23 min
    • 09Retrieving Indexes with indexOf() /& lastIndexOf()3:47 min
    • 10Finding Stuff: find() and findIndex()5:20 min
    • 11Is it Included?1:20 min
    • 12Alternative to for Loops: The forEach() Method4:24 min
    • 13Transforming Data with map()2:38 min
    • 14sort()ing and reverse()ing4:15 min
    • 15Filtering Arrays with filter()2:35 min
    • 16Where Arrow Functions Shine!1:31 min
    • 17The Important reduce() Method7:33 min
    • 18Chaining Methods in JavaScript0:00 min
    • 19Arrays & Strings - split() and join()4:21 min
    • 20The Spread Operator (...)10:31 min
    • 21Understanding Array Destructuring4:24 min
    • 22Maps & Sets - Overview4:16 min
    • 23Working with Sets7:20 min
    • 24Working with Maps9:30 min
    • 25Maps vs Objects3:41 min
    • 26Understanding WeakSet4:50 min
    • 27Understanding WeakMap2:51 min
    • 28Assignment - Arrays & Iterables (Problem)3:05 min
    • 29Assignment - Arrays & Iterables (Solution)10:55 min
    • 30Wrap Up1:25 min
    • 31Useful Resources & Links0:00 min

And 28 more sections in the full course.

Ready to Get Started?

Choose the option that works best for you.

Single Course

JavaScript - The Complete Guide (Beginner + Advanced)

One Payment. Lifetime Access.

$99one-time

  • One-time payment
  • All future updates for this course
  • Downloadable resources & code
  • Certificate of completion
  • Hands-on exercises & projects
  • Self-paced learning
  • English captions on all videos
  • Lifetime access