Operátorok precedenciája

Az operátorok precedenciája azt határozza meg, hogy milyen "szorosan" köt össze két kifejezést. Például az 1 + 5 * 3 kifejezésben, a kifejezés értéke 16, és nem 18, mert a szorzás operátorának, a ("*")-nak nagyobb precedenciája van, mint az összeadásénak ("+").

[Az asszociativitás talán megér egy kis magyarázatot. Ez azt határozza meg, hogy az adott szinten levő operátorok egymás utáni zárójel nélküli használatát hogyan értelmezi a fordító. Talán egy példával kicsit érthetőbbé tehető: pl. 1-2+3 értelmezhető (1-2)+3-nak, eredménye 2, vagy 1-(2+3)-nak, eredménye -4. Az előbbi kiértékelés, (mely balról jobbra asszociatív) a helyes ebben az esetben. A második kiértékelés pedig jobbról balra asszociatív (ilyen például a hatványozás, ami nincs a nyelvben implementálva. Viszont van egy pow nevű függvény. Szóval 2**3**2 (ahol ** lenne a hatványozás) helyesen 2 a kilencediken = 512 lenne.) Vannak nem köthető operátorok is, ilyenek az összehasonlító operátorok. Tehát nem írható, hogy 2<$x<4.]

Az alábbi táblázat az operátorokat precedenciájuk szerint növekvő sorrendben tartalmazza.

Táblázat 10-6. Operátorok precedenciája

asszociativitásoperátorok
balról jobbra,
balról jobbraor
balról jobbraxor
balról jobbraand
jobbról balraprint
balról jobbra= += -= *= /= .= %= &= |= ^= ~= <<= >>=
balról jobbra? :
balról jobbra||
balról jobbra&&
balról jobbra|
balról jobbra^
balról jobbra&
nem köthető== != ===
nem köthető< <= > >=
balról jobbra<< >>
balról jobbra+ - .
balról jobbra* / %
jobbról balra! ~ ++ -- (int) (double) (string) (array) (object) @
jobbról balra[]
nem köthetőnew