- 01Setting Up (What You'll Need)
- 02Creating Variables
- 03Conditionals (if Statements)
- 04Loops (for Statements)
- 05Creating Functions
- 06Working with Arrays
- 07Working with Objects
- 08Loops (while Statements)
- 09Working with Strings
- 10Using Classes (Object-Oriented Programming)
- 11Error Handling (try...catch)
- 12Destructuring and the Spread Syntax
- 13Async Code (Promise / async & await)
- 14Advanced Array Methods (filter and reduce)
- 15The switch Statement
- 16The Ternary Operator
- 17Inheritance (Extending Classes)
- 18How to Write Comments
- 19Logical Operators (AND, OR, NOT)
- 20Constants (Making Read-Only Values with const)
- 21Splitting and Joining Strings (split and join)
- 22Null-Safe Syntax (?? and ?.)
- 23Searching Arrays and Collections (includes and find)
- 24Transforming Arrays with map
- 25Two-Dimensional Arrays (Table-Shaped Data)
- 26Building a Custom Error Class
- 27Default Arguments (Setting Initial Values for Parameters)
- 28Using Set (Collections)
- 29Verifying Correctness with assert (Your First Step Into Testing)
- 30Higher-Order Functions (Passing a Function as an Argument)
- 31Stacks and Queues (Basic Data Structures)
- 32The Basics of Type Conversion (Casting)
- 33Introduction to Regular Expressions (Pattern Matching)
- 34The Binary Search Algorithm
- 35Building a Caesar Cipher (a Letter-Shifting Cipher)
- 36Understanding How Bubble Sort Works
- 37Building and Displaying Dates (Basic Year/Month/Day Operations)
- 38Writing Several Unit Tests Together (Multiple Test Cases)
- 39Speeding Up Calculations with Memoization (Caching)
- 40Normalizing Strings (trim and Case Unification)
- 41The Difference Between Shallow Copy and Deep Copy
- 42The Basics of Enums (Enumerated Types)
- 43Flattening Arrays (flatten)
- 44Reversing a String and Checking for a Palindrome
- 45Pairing Up Two Arrays (a zip Operation)
- 46Rounding Numbers (floor, ceil, and round)
- 47Multi-Line Strings (Template Literals)
- 48Returning Multiple Values from a Function (Array Destructuring)
- 49Finding the GCD and LCM (the Euclidean Algorithm)
- 50Formatting Numbers (Digit Alignment and Decimal Precision)
- 51Cleanup Processing with try/catch/finally
- 52Writing Type-Agnostic, General-Purpose Functions
- 53The Basics of Map (an Object for Key-Value Pairs)
- 54Generating Random Numbers
- 55Bitwise Operations (AND, OR, XOR, and Shift Operations)
- 56Using static (Static Class Properties and Methods)
- 57Waiting a Fixed Amount of Time (setTimeout and await)
- 58Watch Out for Floating-Point Rounding Error
- 59Transforming and Flattening at Once with flatMap()
- 60FizzBuzz (the Classic Practice Problem)
- 61Checking Whether a Number Is Prime
- 62Set Operations with Set (Union, Intersection, and Difference)
- 63Converting Number Bases (Binary and Hexadecimal)
- 64Checking That Brackets Match (an Application of Stacks)
- 65Checking for an Anagram
- 66Checking Whether a Year Is a Leap Year
- 67Converting Temperature (Celsius ⇄ Fahrenheit)
- 68Finding the Prime Factorization
- 69[Applied] Build a Simple To-Do List Tool
The Ternary Operator
In this lesson you'll learn how to write JavaScript's ternary operator so you can express simple conditionals concisely in a single line. This is for people searching "JavaScript ternary operator usage" or "JavaScript one-line if."
Writing condition ? valueIfTrue : valueIfFalse lets you express a simple if statement in one line. This is called the ternary operator. It's well suited for short branches, like "decide whether someone is an adult or a minor and pick a message on the spot." Instead of spending four lines on if...else, its biggest advantage is bundling a variable assignment together with a conditional into a single line.
The sample code uses the ternary operator age >= 20 ? "Adult" : "Minor" to switch which string gets assigned to the message variable depending on the value of age. It helps to remember the shape of the syntax: the condition comes before the ?, and the true-value and false-value sit on either side of the : — that makes both reading and writing it much smoother.
The trick is to only use it for a simple two-way decision — forcing a complicated condition into it just makes things harder to read. Nesting ternary operators to express several stages of branching tends to produce code whose meaning isn't obvious at a glance, so it's safer to use an if statement for complex branching. Keep in mind the rule: "ternary operators only for short, simple two-way choices."
In real development, the ternary operator comes up frequently for small value switches — swapping the text displayed on screen depending on a condition, or deciding on a fallback value when something hasn't been set yet. Whether something should be written as an if statement or is fine as a ternary is a point that often comes up in code review discussions about readability.
The condition part can also combine logical operators (&& and ||) in addition to comparison operators, letting you fit even somewhat complex checks into one line. But if it starts getting hard to read, it's important to make the judgment call to switch back to an if statement rather than forcing the ternary operator.
The ternary operator can also be embedded directly inside a template literal. Writing something like `You are ${age >= 20 ? "an adult" : "a minor"}` lets you complete a conditional text swap entirely within one string.
💡 Anything passed to console.log() appears in the output below.
