PopularJourney
Learn JavaScript
Learn JavaScript online with a free, interactive course. Master JS syntax, modern ES6 features, functions, and the DOM through hands-on coding exercises and real challenges — with AI hints when you get stuck and a certificate when you finish.
238,854+ codders enrolled
This journey includes
AI-assisted coding help
Hands-on interactive lessons
Audio narration on every lesson
Quizzes to test your knowledge
Free certificate of completion
Syllabus
4 sections271 lessons219 challenges1,458 quiz questions01Section 1
Fundamentals
Build a strong foundation with essential concepts and basic skillsSTART LEARNINGIntroduction
4 lessons223- 01The LanguageChallenge
- 02Hello World!ChallengeQuizAudio
- 03CommentsQuizAudio
- 04Code StructureQuizAudio
Variables
7 lessons1247- 01NumbersChallengeMasteryQuizAudio
- 02StringChallengeMasteryQuizAudio
- 03BooleanChallengeMasteryQuizAudio
- 04Naming ConventionsChallengeMasteryQuizAudio
- 05Empty VariablesChallengeQuizAudio
- 06Recap - Initialize VariablesChallenge
- 07ConstantsChallengeMasteryQuizAudio
Operators Part 1
6 lessons1037- 01Arithmetic OperatorsChallengeMasteryQuizAudio
- 02Modulo OperatorChallengeMasteryQuizAudio
- 03Arithmetic ShortcutsChallengeMasteryQuizAudio
- 04Comparison OperatorsChallengeMasteryQuizAudio
- 05Strict vs Loose EqualityChallengeQuizAudio
- 06Recap - Simple MathChallenge
Operators Part 2
5 lessons831- 01Logical Operators Part 1ChallengeMasteryQuizAudio
- 02Logical Operators Part 2ChallengeMasteryQuizAudio
- 03Recap - Simple LogicChallenge
- 04Logical Operators Part 3ChallengeMasteryQuizAudio
- 05Type CoercionChallengeQuizAudio
Decision Making
5 lessons729- 01If StatementChallengeMasteryQuizAudio
- 02If - ElseChallengeMasteryQuizAudio
- 03Recap - Simple CalculatorChallenge
- 04Nested If - ElseChallengeQuizAudio
- 05Switch StatementChallengeQuizAudio
Basic IO
6 lessons931- 01OutputChallengeMasteryQuizAudio
- 02Output with VariablesChallengeMasteryQuizAudio
- 03Type Conversion - Part 1ChallengeMasteryQuizAudio
- 04Type Conversion - Part 2ChallengeQuizAudio
- 05Recap - Till 120Challenge
- 06Recap - True or FalseChallenge
Bill Split Calculator
Project4 lessons1- 01Welcome MessageChallenge
- 02Calculating The Tip And TotalProject
- 03Splitting The BillProject
- 04Formatted OutputProject
Loops
7 lessons1345- 01For LoopChallengeMasteryQuizAudio
- 02While LoopChallengeMasteryQuizAudio
- 03BreakChallengeMasteryQuizAudio
- 04ContinueChallengeMasteryQuizAudio
- 05Recap - FactorialChallenge
- 06Do While LoopChallengeMasteryQuizAudio
- 07Nested LoopChallengeMasteryQuizAudio
Functions
8 lessons1250- 01Declare a FunctionChallengeMasteryQuizAudio
- 02ArgumentsChallengeMasteryQuizAudio
- 03ReturnChallengeMasteryQuizAudio
- 04Recap - Sigma FunctionChallenge
- 05Function ExpressionChallengeMasteryQuizAudio
- 06Default ParametersQuizAudio
- 07Arrow FunctionsChallengeMasteryQuizAudio
- 08Recap - Validation FunctionChallenge
FizzBuzz with a Twist
Project4 lessons1- 01Game OverviewChallenge
- 02The FizzBuzz FunctionProject
- 03Looping The NumbersProjectAudio
- 04Adding The TwistProject
Arrays Part 1
6 lessons1037- 01Declaring an ArrayChallengeMasteryQuizAudio
- 02Accessing Array ElementsChallengeMasteryQuizAudio
- 03Modifying ArraysChallengeQuizAudio
- 04Array Methods Part 1ChallengeMasteryQuizAudio
- 05Array Methods Part 2ChallengeMasteryQuizAudio
- 06Recap - Array ProcessorChallenge
Arrays Part 2
8 lessons1254- 01Iterating Over ArraysChallengeQuizAudio
- 02The forEach MethodChallengeQuizAudio
- 03for...of LoopChallengeMasteryQuizAudio
- 04Recap - P CounterChallenge
- 05Array SlicingChallengeMasteryQuizAudio
- 06Array Methods Part 3ChallengeMasteryQuizAudio
- 07Array Methods Part 4ChallengeMasteryQuizAudio
- 08Membership TestingChallengeQuizAudio
Grocery List Tracker
Project4 lessons1- 01Project OverviewChallenge
- 02Add ItemProject
- 03Remove ItemProject
- 04View ListProject
Final Challenges
3 lessons37- 01Number PyramidChallengeQuizAudio
- 02Double The OddsChallenge
- 03What To BuyChallenge
02Section 2
Logic & Flow
Develop problem-solving skills and create dynamic, interactive programsSTART LEARNINGStrings In Depth
5 lessons630- 01String FundamentalsQuiz
- 02Iterate Over StringsChallengeMasteryQuiz
- 03Template LiteralsChallengeQuiz
- 04String MethodsChallengeMasteryQuiz
- 05Recap - String WeaverChallenge
Multi-dimensional Arrays
9 lessons1452- 012D Arrays BasicsQuiz
- 02Accessing 2D Array ElementsChallengeMasteryQuiz
- 03Nested Loops with 2D ArraysChallengeMasteryQuiz
- 04Recap - 2D ArraysChallenge
- 05Matrix Addition & SubstractionChallengeMasteryQuiz
- 06Jagged ArraysChallengeMasteryQuiz
- 073D Arrays And BeyondChallengeMasteryQuiz
- 08Common 2D Array PatternsChallengeMasteryQuiz
- 09Recap - All About ArraysChallenge
JSON Part 1
7 lessons944- 01What is a JSON?Quiz
- 02Check If Key ExistsChallengeMasteryQuiz
- 03Object MethodsChallengeMasteryQuiz
- 04The Spread Operator Part 1Quiz
- 05The Spread Operator Part 2ChallengeMasteryQuiz
- 06Remove KeysChallengeMasteryQuiz
- 07Recap - JSON Manipulate KeysChallenge
JSON Part 2
6 lessons530- 01Iterate Over JSONChallengeQuiz
- 02Nested JSONChallengeQuiz
- 03JSON Optional ChainingQuiz
- 04Shallow And Deep CopyChallengeQuiz
- 05Recap - Bicycle ShopChallenge
- 06Recap - Solar SystemChallenge
Sets Part 1
8 lessons749- 01What Is A Set?ChallengeQuiz
- 02Iterating Over SetsQuiz
- 03Adding An ElementChallengeQuiz
- 04Removing An ElementChallengeQuiz
- 05Checking If An Element ExistsChallengeQuiz
- 06Size And Is EmptyChallengeQuiz
- 07Copy And ClearChallengeQuiz
- 08Recap - Basic Of SetsChallenge
Sets Part 2
6 lessons637- 01Math - Union Of SetsChallengeQuiz
- 02Math - Intersection Of SetsChallengeQuiz
- 03Math - Difference Of SetsChallengeQuiz
- 04Math - Symmetric DifferenceChallengeQuiz
- 05Subsets And SuperSetsChallengeQuiz
- 06Recap - Group FriendsChallenge
Library Management System
Project5 lessons1- 01Project OverviewChallenge
- 02Adding BooksProject
- 03Search By TitleProject
- 04Filter By GenreProject
- 05Mark As ReadProject
Arrays Interesting Topics
4 lessons422- 01Array DestructuringChallengeQuiz
- 02Spread Syntax in ArraysChallengeQuiz
- 03Sparse ArraysChallengeQuiz
- 04Recap - Arrays WorkshopChallenge
Advanced Array methods
9 lessons761- 01The Join & Split MethodsQuiz
- 02The Map Method ChallengeMasteryQuiz
- 03The Filter MethodChallengeQuiz
- 04The Reduce MethodChallengeQuiz
- 05Chaining Array MethodsChallengeQuiz
- 06ForEach And Map Are Same?Quiz
- 07The Sort MethodChallengeQuiz
- 08The Find & FindIndex MethodQuiz
- 09Recap - The Chain MasterChallenge
Manage Festival System
Project6 lessons1- 01Project OverviewChallenge
- 02Add Movies & VenuesProject
- 03Add ScreeningProject
- 04Buy TicketsProject
- 05Rate MoviesProject
- 06Cancel ScreeningsProject
03Section 3
Introduction To TypeScript
Introduction to typescript after learned about javascriptSTART LEARNINGGetting Started with TS
5 lessons232- 01What is TypeScript?Quiz
- 02Why Use TypeScript?Quiz
- 03Your First TypeScript CodeChallengeQuiz
- 04Compilation Process & ErrorsQuiz
- 05Recap: Introduction to TSChallenge
Core Types
7 lessons748- 01Basic Types: str, num, booleanChallengeQuiz
- 02The 'any' Type: Escape HatchChallengeQuiz
- 03The 'unknown' TypeChallengeQuiz
- 04Working with 'null' & 'undef'ChallengeQuiz
- 05Type Inference in ActionChallengeQuiz
- 06Explicit Type AnnotationsChallengeQuiz
- 07Recap: Core Types PracticeChallenge
Data Structure: Arrays & Tuple
9 lessons862- 01Typed ArraysChallengeQuiz
- 02'readonly' Modifier for ArraysChallengeQuiz
- 03What is a Tuple?Quiz
- 04Declaring and Accessing TuplesChallengeQuiz
- 05Destructuring TuplesChallengeQuiz
- 06Readonly TuplesChallengeQuiz
- 07Multi-dimensional Typed ArraysChallengeQuiz
- 08 Spread Operator with ArraysChallengeQuiz
- 09Recap: Arrays and TuplesChallenge
Working with Functions
8 lessons855- 01Typing Params & Return ValuesChallengeQuiz
- 02Typing Arrow FunctionsChallengeQuiz
- 03The 'void' Return TypeChallengeQuiz
- 04Optional Parameters with '?'ChallengeQuiz
- 05Default Parameter ValuesChallengeQuiz
- 06Typing Rest ParametersChallengeQuiz
- 07Defining Function TypesChallengeQuiz
- 08Recap: Building Typed FuncsChallenge
Types: Aliases, Unions & Inter
7 lessons751- 01Type Aliases for PrimitivesChallengeQuiz
- 02Union Types ('|')ChallengeQuiz
- 03Working with Union TypesChallengeQuiz
- 04Literal TypesChallengeQuiz
- 05Intersection Types ('&')ChallengeQuiz
- 06Combining Type AliasesChallengeQuiz
- 07Recap: Advanced Type CombosChallenge
Typing Objects and Interfaces
8 lessons757- 01Inline Object Type AnnotationsChallengeQuiz
- 02Type Aliases for ObjectsChallengeQuiz
- 03Introduction to InterfacesChallengeQuiz
- 04Interfaces vs. Type AliasesQuiz
- 05Optional & Readonly PropsChallengeQuiz
- 06Extending Interfaces and TypesChallengeQuiz
- 07Adding Methods to InterfacesChallengeQuiz
- 08Recap: Defining Object ShapesChallenge
Project: A Simple Task List
Project6 lessons18- 01Project: Defining Task StructChallengeQuiz
- 02Function to Add a TaskProject
- 03Function to Change Task StatusProject
- 04Function: List Tasks by StatusProject
- 05Function: Print Task SummaryProject
- 06Putting It All TogetherProject
Enums
6 lessons638- 01What is a Numeric Enum?ChallengeQuiz
- 02Using Numeric EnumsChallengeQuiz
- 03What is a String Enum?ChallengeQuiz
- 04Using String EnumsChallengeQuiz
- 05Heterogeneous EnumsChallengeQuiz
- 06Recap: Using EnumsChallenge
Generics: A First Look
6 lessons537- 01The Problem Generics SolveQuiz
- 02Creating Generic Identity FuncChallengeQuiz
- 03Using a Generic FunctionChallengeQuiz
- 04Generic ArraysChallengeQuiz
- 05Generic InterfacesChallengeQuiz
- 06Recap: Generic Function PracChallenge
Project: Inventory Management
Project5 lessons18- 01Project: Generic Inventory IteChallengeQuiz
- 02Function: Add Items to InvProject
- 03Function to Find an Item by IDProject
- 04Create Specific Inventory TypeProject
- 05Function to Get Item DetailsProject
Advanced Topics
6 lessons642- 01Type AssertionsChallengeQuiz
- 02 Type Guards: in & instanceofChallengeQuiz
- 03The 'never' TypeChallengeQuiz
- 04Nullable Types ('strictNull')ChallengeQuiz
- 05Index Signatures for ObjectsChallengeQuiz
- 06Recap: Fine-Tuning TypesChallenge
04Section 4
Object Oriented Programming
Discover how to organize code with classes, objects, and reusable structuresSTART LEARNINGObjects & The this Keyword
6 lessons642- 01Quick Review: ObjectsChallengeQuiz
- 02Adding Methods to ObjectsChallengeQuiz
- 03Understanding the this KeywordChallengeQuiz
- 04Constructor FunctionsChallengeQuiz
- 05The new KeywordChallengeQuiz
- 06Recap ChallengeChallenge
Organizing Code
4 lessons434- 01What are Modules?ChallengeQuiz
- 02Exporting with exportChallengeQuiz
- 03Importing with importChallengeQuiz
- 04Default vs. Named ExportsChallengeQuiz
Classes & Objects
4 lessons426- 01What is a Class?ChallengeQuiz
- 02Creating InstancesChallengeQuiz
- 03Properties and MethodsChallengeQuiz
- 04Recap ChallengeChallenge
Methods & Managing State
2 lessons218- 01Methods that modify stateChallengeQuiz
- 02Method chaining patternChallengeQuiz
Encapsulation & Access
4 lessons426- 01EncapsulationChallengeQuiz
- 02Public & Private Class FieldsChallengeQuiz
- 03Private MethodsChallengeQuiz
- 04Recap ChallengeChallenge
Project: A Simple Bank Account
Project3 lessons1- 01BankAccount ClassChallenge
- 02Deposits and WithdrawalsProject
- 03Balance as Private FieldProject
Inheritance & The extends Key
6 lessons645- 01InheritanceChallengeQuiz
- 02The "is-a" RelationshipChallengeQuiz
- 03The extends KeywordChallengeQuiz
- 04The super() MethodChallengeQuiz
- 05Inheriting Properties&MethodsChallengeQuiz
- 06Recap ChallengeChallenge
Organizing OOP Code
1 lesson19- 01Organize Classes into ModulesChallengeQuiz
Static Methods & Properties
4 lessons425- 01Class-Level vs. Instance-LevelChallengeQuiz
- 02Static PropertiesChallengeQuiz
- 03Static Utility MethodsChallengeQuiz
- 04Recap challengeChallenge
Polymorphism
4 lessons425- 01What is Polymorphism?ChallengeQuiz
- 02Overriding Inherited MethodsChallengeQuiz
- 03Using superChallengeQuiz
- 04Recap ChallengeChallenge
Project: A Shape Renderer
Project4 lessons1- 01Setup: Shape Class & ExportChallenge
- 02Circle Class InheritanceProject
- 03Overriding & Area MethodProject
- 04Static Shape CounterProject
Getters & Setters
4 lessons426- 01The get and set KeywordsChallengeQuiz
- 02Computed PropertiesChallengeQuiz
- 03Validation and Side EffectsChallengeQuiz
- 04Recap ChallengeChallenge
Composition vs. Inheritance
3 lessons328- 01The "has-a" vs. "is-a"ChallengeQuiz
- 02The Limits of Deep InheritanceChallengeQuiz
- 03Building objectsChallengeQuiz
Library Management System
Project3 lessons1- 01Designing the LibraryChallenge
- 02Book Class with CompositionProject
- 03Book Author ValidationProject
Final Challenges
4 lessons4- 01Game Character BuilderChallenge
- 02E-commerce Product SystemChallenge
- 03University Management SystemChallenge
- 04Smart Home Device SystemChallenge
Why learn JavaScript with Coddy
- Run JavaScript instantly in your browser — no Node.js install, no IDE setup. Edit, run, and see output side-by-side so the JavaScript feedback loop is immediate.
- Coverage of modern JavaScript: ES6+ syntax, arrow functions, promises, async/await, destructuring, modules — the JavaScript you'd actually use on the job, not legacy patterns.
- AI-assisted hints help you debug a JavaScript exercise without spoiling the solution, so you build the mental model that makes future JS code easier to write.
- Free JavaScript certificate of completion when you finish the course — a credible proof point alongside any portfolio projects or GitHub repos.
Frequently asked questions about learning JavaScript
Is JavaScript hard to learn?
JavaScript is one of the easier programming languages to start with — the syntax is forgiving, you can run code directly in any browser, and basic interactivity (button clicks, alerts) gives instant visual feedback. The trickier parts (asynchronous code, closures, this-binding) come later, and Coddy's course introduces them gradually with hands-on examples.
How long does it take to learn JavaScript?
Plan on one to two weeks of daily practice for the JavaScript basics — variables, functions, conditionals, loops, arrays. Reaching a comfortable level with the DOM, ES6+, and asynchronous JavaScript usually takes two to four months. Going further into React or Node.js is a separate journey on top of that.
Should I learn HTML and CSS before JavaScript?
It helps. JavaScript becomes much more concrete once you can change a real page — hide an element, update text, react to a click. Coddy's HTML and CSS courses are short and directly feed into the JavaScript lessons that touch the DOM, but you can also start with pure JavaScript logic.
Can I learn JavaScript online for free?
Yes. Coddy's interactive JavaScript course is free — full lessons, coding exercises, quizzes, and a certificate. The editor runs in your browser, so you don't need to install Node.js or any other tooling to start writing JS.
What's the difference between JavaScript and Java?
Despite the name, JavaScript and Java are unrelated languages. Java is a statically-typed, class-based language used heavily on servers and Android. JavaScript is dynamically typed and runs in browsers and on Node.js. If you want to build for the web, learn JavaScript; for Android or large enterprise backends, learn Java.
Do I get a certificate after the JavaScript course?
Yes — when you finish Coddy's JavaScript course you receive a free certificate of completion that you can share on LinkedIn or include on your resume. It's a verifiable signal that you've worked through a structured, interactive course, not just watched tutorials.