Swift Operators Precedence and Associativity
FULL-STACK WEB DEVELOPMENT BOOTCAMP
2024 COHORT SIGNUPS END TOMORROW
This tutorial belongs to the Swift series
Think about this expression:
let amount = 1 + 2 * 3
The value of amount
could drastically change depending if 1 + 2
is calculated before 2 * 3
.
The order of calculation is determined by the operator precedence. From higher precedence to lower precedence, as for the most popular operators we have:
- Multiplication (
*
), division (/
), remainder (%
) - Add (
+
), subtract (-
) - Comparisons (
==
,!=
,<
,>
,<=
,>=
) - Logical AND (
&&
) and OR (||
) - Ternary conditional (
?:
) - Assignment and compound assignment operators (
=
,+=
and so on)
This means that the above expression is resolved first calculating the multiplication, and then the sum:
let amount = 1 + 2 * 3 // = 7
The full table of precedence, more complicated, is available at https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations.
When inside an expression you have multiple operators with the same precedence, we make use of the operator associativity. Associativity is a property we use to determine which operation has priority when the precedence is the same.
For example, consider this:
let amount = 4 / 2 * 5
Depending if we first execute 4 / 2
or 2 * 5
, the result could be 10
or 0,4
.
Associativity solves this. Multiplication is left associative, so we must first execute the expression on the left. Parentheses help us figure this out:
let amount = (4 / 2) * 5
Multiplication (*
), division (/
), remainder (%
), add (+
), subtract (-
), logical AND (&&
), logical OR (||
) are left associative
Assignment and compound assignment operators (=
, +=
and so on) and the ternary conditional (?:
) are right associative
Comparisons (==
, !=
, <
, >
, <=
, >=
) donβt have associativity.
- Learn modern web development in my BOOTCAMP (SIGNUP END TOMORROW FEB 20, 2024)
- THE VALLEY OF CODE (+ PRO), your web development manual
- I wrote 15+ coding BOOKS, all available in THE VALLEY OF CODE PRO
- Indie solopreneur internet business masterclass SOLO LAB (summer 2024)