Bird
Raised Fist0
Kotlinprogramming~10 mins

Elvis operator (?:) for default values in Kotlin - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Elvis operator (?:) for default values
Evaluate expression on left
↓
Is it null?
No→Use left value
Yes↓
Use right default value
The Elvis operator checks if the left expression is null; if not, it uses that value, otherwise it uses the right default value.
Execution Sample
Kotlin
val name: String? = null
val displayName = name ?: "Guest"
println(displayName)
This code assigns a default value "Guest" if name is null, then prints the result.
Execution Table
StepExpressionEvaluationResultAction
1namenullnullCheck if null
2name ?: "Guest"null ?: "Guest""Guest"Use right default value
3println(displayName)"Guest"Output: GuestPrint the result
💡 Execution ends after printing the default value because name was null
Variable Tracker
VariableStartAfter Elvis operatorFinal
namenullnullnull
displayNameuninitialized"Guest""Guest"
Key Moments - 2 Insights
Why does displayName become "Guest" when name is null?
Because the Elvis operator ?: checks if name is null (row 1), and since it is, it uses the right side "Guest" as the default value (row 2).
What happens if name is not null?
If name is not null, the Elvis operator returns the left value directly, skipping the default (not shown here but implied by the flow).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table at step 2, what value does the Elvis operator produce?
A"Guest"
Bnull
Cname
DError
💡 Hint
Check the 'Result' column in step 2 of the execution_table
At which step does the program print the output?
AStep 1
BStep 2
CStep 3
DNo print step
💡 Hint
Look for println in the 'Expression' column in execution_table
If name was "Alice", what would displayName be after the Elvis operator?
A"Guest"
B"Alice"
Cnull
DError
💡 Hint
Recall Elvis operator returns left value if not null (concept_flow)
Concept Snapshot
Elvis operator ?: returns left value if not null,
otherwise returns right default value.
Syntax: val result = expr ?: default
Useful for providing fallback values
Avoids explicit null checks.
Full Transcript
The Elvis operator ?: in Kotlin helps assign default values when a variable might be null. It first checks the left expression; if it is not null, it uses that value. If it is null, it uses the right side as a default. In the example, name is null, so displayName becomes "Guest". The program then prints "Guest". If name had a value like "Alice", displayName would be "Alice". This operator simplifies code by avoiding manual null checks.

Practice

(1/5)
1. What does the Elvis operator ?: do in Kotlin?
easy
A. Checks if two values are equal
B. Converts a value to a string
C. Throws an exception if the left value is null
D. Returns the left value if it is not null; otherwise returns the right value

Solution

  1. Step 1: Understand the Elvis operator purpose

    The Elvis operator ?: is used to provide a default value when the left side is null.
  2. Step 2: Analyze the behavior

    If the left value is not null, it returns that value; otherwise, it returns the right value as a fallback.
  3. Final Answer:

    Returns the left value if it is not null; otherwise returns the right value -> Option D
  4. Quick Check:

    Elvis operator = default value if null [OK]
Hint: Elvis operator gives a fallback value if null [OK]
Common Mistakes:
  • Thinking it compares two values
  • Assuming it throws an error on null
  • Confusing it with string conversion
2. Which of the following is the correct syntax to use the Elvis operator in Kotlin?
easy
A. val result = value ??: defaultValue
B. val result = value ? defaultValue
C. val result = value ?: defaultValue
D. val result = value ?:? defaultValue

Solution

  1. Step 1: Recall the correct Elvis operator syntax

    The Elvis operator is written as ?: without any extra characters or spaces.
  2. Step 2: Match the syntax with options

    val result = value ?: defaultValue uses ?: correctly between the variable and the default value.
  3. Final Answer:

    val result = value ?: defaultValue -> Option C
  4. Quick Check:

    Correct Elvis syntax = value ?: defaultValue [OK]
Hint: Elvis operator is ?: exactly, no extra symbols [OK]
Common Mistakes:
  • Using single question mark instead of ?:
  • Adding extra question marks
  • Swapping the order of symbols
3. What will be the output of this Kotlin code?
val name: String? = null
val displayName = name ?: "Guest"
println(displayName)
medium
A. null
B. Guest
C. name
D. Compilation error

Solution

  1. Step 1: Check the value of name

    The variable name is explicitly set to null.
  2. Step 2: Apply the Elvis operator

    Since name is null, displayName gets the default value "Guest".
  3. Final Answer:

    Guest -> Option B
  4. Quick Check:

    null ?: "Guest" = "Guest" [OK]
Hint: If left is null, Elvis returns right side [OK]
Common Mistakes:
  • Assuming it prints null
  • Thinking it prints variable name
  • Expecting a compile error
4. Identify the error in this Kotlin code snippet using the Elvis operator:
val input: String? = null
val output = input ? "Default"
medium
A. Incorrect operator used; should be ?: instead of ?
B. Missing right side value after Elvis operator
C. Variable input cannot be nullable
D. No error; code is correct

Solution

  1. Step 1: Examine the operator used

    The code uses ? instead of the Elvis operator ?:.
  2. Step 2: Understand correct Elvis operator usage

    The Elvis operator must be ?: to provide a default value when the left side is null.
  3. Final Answer:

    Incorrect operator used; should be ?: instead of ? -> Option A
  4. Quick Check:

    Elvis operator must be ?: not ? [OK]
Hint: Elvis operator always uses ?: not just ? [OK]
Common Mistakes:
  • Using single question mark instead of Elvis operator
  • Forgetting the default value after ?:
  • Assuming nullable variables cause error here
5. Given the following Kotlin code, what will be the value of finalScore?
fun calculateScore(score: Int?): Int {
    return score ?: 0
}

val userScore: Int? = 5
val finalScore = calculateScore(userScore ?: 10)
hard
A. 5
B. 10
C. 0
D. Compilation error

Solution

  1. Step 1: Evaluate the expression inside the function call

    The argument is userScore ?: 10. Since userScore is 5 (not null), the expression evaluates to 5.
  2. Step 2: Call calculateScore with 5

    The function returns the score if not null, so it returns 5.
  3. Final Answer:

    5 -> Option A
  4. Quick Check:

    userScore ?: 10 = 5, function returns 5 [OK]
Hint: Elvis operator picks first non-null value [OK]
Common Mistakes:
  • Thinking userScore ?: 10 returns 10
  • Confusing function return with argument default
  • Assuming null causes error here
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard