
Explore modern JavaScript fundamentals, syntax, and latest updates through hands-on exercises and code demos, building a rock-solid foundation without libraries or frameworks.
Identify essential tools and resources for learning javascript, including two key books by David Flanagan and Axel Ruschmeyer, plus online references like the ecma 262 spec and modern javascript tutorial.
Explore the core features of JavaScript, including its multi‑paradigm nature, dynamic and weak typing, and memory management, with a history from livescript to ecma standards and v8.
Explore the lexical structure of JavaScript, including statements, comments, semicolon usage, and whitespace, with emphasis on case insensitivity and use strict for function scope.
Create valid identifiers in JavaScript, starting with a letter, underscore, or dollar sign, then letters, digits, underscores, or dollar signs. Reserved words cannot be used as identifiers.
Explore JavaScript data types and literals, from numbers, strings, booleans, objects, null, undefined, symbols, to bigints, including template literals with expressions and number formats like hex, octal, and binary.
Explore JavaScript expressions, including primary expressions, property access with dot and bracket notation, invocation, object creation, and learn how the question mark dot syntax handles null or undefined with operators.
Explore JavaScript operators, their precedence and associativity, and how operands, L-value expressions, and type coercion affect arithmetic, string concatenation, unary, increment, decrement, and bitwise operations.
Deepen your understanding of JavaScript operators by exploring logical operators, identity and equality checks, and comparison operators, along with the knowledge coalescing and conditional operators.
Explore assignment operators, destructuring, and the spread operator to simplify data handling, with array and object destructuring, defaults, and rest and ellipsis syntax.
Explore JavaScript operators in depth, including typeof, instanceof, in, delete, void, and the comma operator, with examples of behavior in objects, arrays, and strict mode.
Master implicit type conversion in JavaScript, where operators coerce operands to required types, sometimes producing surprises. Learn how numbers, strings, booleans, objects, null, undefined, symbols, and BigInt convert.
Explore how JavaScript executes statements, including empty, block, and expression statements, and the role of semicolons. Learn about common side-effect expressions like assignments and function calls.
Learn how to declare variables in JavaScript with let, const, and var, understand block scope, destructuring, dynamic typing, and hoisting, and see how scope and strict mode influence behavior.
Master conditional branching in JavaScript with if statements and switch statements. Learn truthy and falsy values, nesting, and handling default cases to control code flow.
Explore JavaScript loops to iterate through arrays, process data, and automate repetitive tasks, using while, do while, and the for family (for, for in, for of) for objects and strings.
Explore unconditional branching in JavaScript, including break and continue with labels. See how labels, return, and loops shape program flow, with undefined returned when no value is provided.
Master exception handling in JavaScript using try, catch, and finally to safely respond to errors, throw exceptions, and use error objects with name and message.
Define and use functions to encapsulate logic, enable reuse, and create modular JavaScript programs. Explore function statements, expressions, and arrow functions, including this binding, hoisting, and lack of overloading.
Explore how function parameters connect data to functions in JavaScript, including rest parameters, default parameters, and destructuring, with type checks and handling undefined, extra, or missing arguments.
Learn how to invoke functions in JavaScript, including direct calls, methods, constructors with new, and indirect calls via call, apply, or bind, and how this value depends on invocation context.
Explore closures in JavaScript, showing how a function remembers its environment after scope exit to enable data encapsulation, partial application, and memoization, while avoiding memory leaks and unintended shared state.
Explore the basics of JavaScript arrays, including their dynamic, heterogeneous, and sparse nature, and learn how to create them with literals, the array function, array of, and array from.
Explore how JavaScript treats arrays as objects, focusing on indexes and the lens property; learn how dense and sparse arrays affect lens and how deleting or setting lens changes elements.
Explore ways to traverse arrays in JavaScript, including for loops with length caching, for-of loops, and keys or entries for index-value access, while handling holes and undefined elements.
Explore essential array methods in JavaScript, including forEach, map, filter, find, reduce, and flatten with flatMap, plus immutable updates via the width method and negative index handling.
Explore slicing, sorting, reordering, and converting arrays using methods like slice, splice, fill, copyWithin, indexOf, includes, join, and isArray.
Explore array-like objects in JavaScript, learn how they resemble arrays but lack direct methods, and discover borrowing array methods via call or apply on objects like arguments and strings.
Explore the global object as the foundation of JavaScript's global context, and learn its value properties, global functions such as parseInt and parseFloat, and built-in objects like Math and JSON.
Explore how numbers work in JavaScript—from wrapper objects to the number object, with string representations like toExponential, toFixed, and toPrecision, and helpers such as Number.parseInt, Number.parseFloat, Number.isFinite, Number.isNaN, and BigInt.
Explore the JavaScript date object, create dates with the constructor, and use get, set, and string methods to format, compare, and calculate durations from Unix epoch onward.
Master the string object in JavaScript, covering immutability, length, indexing, and a comprehensive set of methods for case, trim, replace, normalize, extract, and search, plus template literals and tagged templates.
Explore regular expressions in JavaScript, learn to create patterns with constructors or literals, apply flags like global and case-insensitive, and use test and exec to match and extract text.
Explore the symbol type in JavaScript as a unique primitive for creating identifiers and object keys. Learn about the global registry, Symbol.for, Symbol.keyFor, and well-known symbols like Symbol.iterator and Symbol.toPrimitive.
Create objects in modern JavaScript using object literals, shorthand notation, and the spread operator, then enhance them with getters, setters, prototypes, and constructors.
Explore how to access, modify, and manage object properties in JavaScript using dot notation, bracket notation, conditional property access, prototype chains, and checks, deletions, and enumerations.
Learn property metadata in JavaScript, including writable, enumerable, configurable, and value, plus get and set. Explore defining property descriptors and using get own property descriptor and Object.create.
Explore the metadata of JavaScript objects, including extensibility and how to seal or freeze objects to control behavior and immutability, and manipulate prototypes with getPrototypeOf and setPrototypeOf.
Explore how prototypes drive prototypal inheritance in JavaScript, including the prototype chain, reading vs writing properties, and setting prototypes with Object.create, new, or setPrototypeOf.
Explore constructor functions as a core object oriented pattern in JavaScript, using the new operator and prototypes to create multiple objects with shared methods and encapsulated private fields.
Explore JavaScript classes as a cleaner, syntactic sugar over prototypal inheritance, covering class declarations and expressions, constructors, prototypes, static methods, getters, setters, and private fields.
Explore how class inheritance works in JavaScript using extends and super, showing code reuse, an employee from person example, and color point extending point.
Explore how iterables enable sequential data access in arrays, strings, and custom objects. Use for of loops, the spread operator, and symbol.iterator with next method.
Explore generator functions in JavaScript and learn how yield pauses execution to create iterators, delegate to other generators, and iterate with for of over finite and infinite sequences.
Explore Map and Set in JavaScript, modern data structures with insertion order and flexible key types, plus Ecmascript 2024 map group by and set union, intersection, difference.
Explore buffers, views, and typed arrays to efficiently handle raw binary data in JavaScript, using array buffers, data views, and typed array views with endianness control.
Modern JavaScript is a comprehensive course that takes you deep into the core of the JavaScript language — from the very basics to advanced concepts. Whether you're new to JavaScript or want to fill in knowledge gaps, this course is designed to help you understand how the language really works.
We’ll cover the full range of topics, including ES2024 syntax, types and expressions, functions and closures, arrays, objects, prototypes, classes, asynchronous programming with promises and async/await, and much more. Along the way, you'll also learn modern coding standards and best practices that professionals use in real-world projects.
This course focuses on clear explanations, well-structured examples, and hands-on practice to reinforce your learning. By the end, you'll be able to confidently write clean, efficient, and modern JavaScript code — and truly understand what you're doing.
In addition to mastering the syntax and structure of the language, you’ll explore common pitfalls, subtle language behaviors, and advanced JavaScript features that are often overlooked in beginner-level courses. The content is designed to help you build a solid mental model of how JavaScript works under the hood.
Whether you're aiming to become a front-end or full-stack developer, preparing for technical interviews, or simply expanding your skillset — this course will provide you with a strong foundation and the confidence to apply JavaScript in real projects.