Προτεραιότητα τελεστών

Όταν γράφουμε εκφράσεις που περιλαμβάνουν πολλούς τελεστές, όπως για παράδειγμα 5 + 3 * 2, πώς ξέρει η JavaScript ποια πράξη να κάνει πρώτη; Η απάντηση είναι απλή και έχει να κάνει με τον τρόπο η JavaScript αντιλαμβάνεται την προτεραιότητα τελεστών (operator precedence).

Τι είναι η προτεραιότητα τελεστών

Η προτεραιότητα είναι απλά η σειρά με την οποία θα εκτελεστούν οι τελεστές σε ένα expression. Λειτουργεί ακριβώς όπως στα μαθηματικά, όπου γνωρίζουμε ότι ο πολλαπλασιασμός και η διαίρεση έχουν προτεραιότητα έναντι της πρόσθεσης και της αφαίρεσης. Για παράδειγμα, στo expression 5 + 3 * 2:

  1. Πρώτα εκτελείται ο πολλαπλασιασμός: 3 * 2 δίνει αποτέλεσμα 6.
  2. Μετά εκτελείται η πρόσθεση: 5 + 6 μας δίνει αποτέλεσμα 11. Αν δεν υπήρχε προτεραιότητα, θα μπορούσαμε να υποθέσουμε ότι το expression γίνεται evaluate ως (5 + 3) * 2, που θα μας έδινε αποτέλεσμα 16, αλλά αυτό είναι λάθος. Η JavaScript, όπως και τα μαθηματικά, ακολουθεί συγκεκριμένους κανόνες.

Χρήση Παρένθεσης

Οι παρενθέσεις (()) είναι ο καλύτερος φίλος μας όταν θέλουμε να ελέγξουμε τη σειρά εκτέλεσης ή να κάνουμε τον κώδικά μας πιο ευανάγνωστο. Οποιαδήποτε έκφραση βρίσκεται μέσα σε παρενθέσεις εκτελείται πάντα πρώτη, ανεξάρτητα από την προτεραιότητα των τελεστών που περιέχει.

Εκτός από τον έλεγχο της σειράς, η χρήση παρενθέσεων βελτιώνει δραματικά την αναγνωσιμότητα του κώδικα. Ακόμα κι αν γνωρίζετε τους κανόνες προτεραιότητας απ’ έξω, το να βάζετε παρενθέσεις σε σύνθετες εκφράσεις βοηθά εσάς (και οποιονδήποτε άλλον διαβάζει τον κώδικά σας) να καταλάβετε αμέσως την πρόθεση.

// Αποτέλεσμα: 11 (Προτεραιότητα στον πολλαπλασιασμό)
let result1 = 5 + 3 * 2;

// Αποτέλεσμα: 16 (Οι παρενθέσεις αναγκάζουν την πρόσθεση να γίνει πρώτη)
let result2 = (5 + 3) * 2;
console.log(result2);

// Εδώ οι παρενθέσεις κάνουν σαφή τη λογική ομαδοποίηση των συνθηκών.
let isEligible = (age >= 18 && hasLicense) || (hasPermit && !isProbation);

Πίνακας Προτεραιότητας

Αυτός ο πίνακας δείχνει τους πιο συνηθισμένους τελεστές από την υψηλότερη προς τη χαμηλότερη προτεραιότητα (οι τελεστές στην ίδια σειρά έχουν την ίδια προτεραιότητα και αξιολογούνται από αριστερά προς τα δεξιά, εκτός αν αναφέρεται διαφορετικά).

ΠροτεραιότηταΤελεστέςΠεριγραφή
Υψηλότερη()Ομαδοποίηση (εκτελείται πάντα πρώτη)
++, --Αύξηση/Μείωση (πρόθεμα/επίθεμα)
**Εκθετική Δύναμη
*, /, %Πολλαπλασιασμός, Διαίρεση, Υπόλοιπο
+, -Πρόσθεση, Αφαίρεση
<, <=, >, >=Σύγκριση (μεγαλύτερο/μικρότερο από)
==, !=, ===, !==Ισότητα/Ανισότητα (χαλαρή/αυστηρή)
&&Λογικό AND
||Λογικό OR
Χαμηλότερη=, +=, -=, *=, ...Εκχώρηση (από δεξιά προς αριστερά)

Δεν χρειάζεται να απομνημονεύσετε ολόκληρο τον πίνακα. Είναι πιο σημαντικό να καταλάβετε την ιδέα της προτεραιότητας και να χρησιμοποιείτε παρενθέσεις όποτε έχετε αμφιβολίες ή θέλετε να κάνετε τον κώδικα πιο ευανάγνωστο. Έτσι, θα διασφαλίσετε ότι οι πράξεις σας εκτελούνται με τη σωστή σειρά.