Home » Operators In Pinescript » Understanding Operator Precedence in Pine Script

Understanding Operator Precedence in Pine Script

Photo of author
Published on

Introduction to Operator Precedence

In Pine Script, understanding operator precedence is crucial for writing accurate and efficient scripts. Operator precedence determines the order in which different operations are performed in an expression. Knowing this order helps prevent logical errors and ensures that calculations are executed as intended.

What is Operator Precedence?

  • Definition: Operator precedence defines the hierarchy of operations, dictating which operations are performed first in an expression.
  • Importance: Incorrect understanding of precedence can lead to unexpected results and bugs in scripts.

Operators Sorted by Precedence

Operators in Pine Script are categorized by their precedence level, from highest to lowest:

  1. Precedence Level 9: [ ] (history-referencing operator)
  2. Precedence Level 8: Unary +, Unary -, not
  3. Precedence Level 7: *, /, % (multiplication, division, modulo)
  4. Precedence Level 6: +, - (addition, subtraction)
  5. Precedence Level 5: >, <, >=, <= (comparison operators)
  6. Precedence Level 4: ==, != (equality and inequality)
  7. Precedence Level 3: and
  8. Precedence Level 2: or
  9. Precedence Level 1: ?: (ternary operator)

Left-to-Right Calculation

  • When multiple operators of the same precedence level are used in an expression, they are calculated from left to right.

Using Parentheses

  • Parentheses for Control: To alter the natural order of precedence, use parentheses to group parts of an expression.

Use Case Example: Complex Conditional Indicator

Example Code

indicator("Complex Conditional Indicator", overlay=true)
condition1 = close > open
condition2 = volume > sma(volume, 20)
combinedCondition = condition1 and condition2 or close > close[1]

plotshape(combinedCondition, title="Signal", location=location.belowbar, color=color.blue, style=shape.circle)

Explanation of Each Line

  1. Script Initialization: //@version=5 sets the Pine Script version.
  2. Indicator Declaration: indicator("Complex Conditional Indicator", overlay=true) declares a new indicator with an overlay on the price chart.
  3. Defining Conditions:
  • condition1 = close > open: Checks if the closing price is greater than the opening price.
  • condition2 = volume > sma(volume, 20): Determines if the current volume is greater than the 20-period SMA of volume.
  1. Combining Conditions:
  • combinedCondition = condition1 and condition2 or close > close[1]: Combines the conditions using and and or operators. Due to operator precedence, and is evaluated before or.
  1. Plotting the Signal:
  • plotshape(combinedCondition, ...): Plots a blue circle below the bar if the combined condition is met.

Key Takeaways

  • Operator precedence in Pine Script dictates the order of operations in an expression.
  • Understanding this concept is crucial for writing accurate and logical scripts.
  • Parentheses can be used to override the natural precedence order, ensuring expressions are evaluated as intended.


Operator precedence is a fundamental concept in Pine Script that influences how expressions are evaluated. By understanding and correctly applying operator precedence, you can create more robust and error-free scripts. This knowledge is especially important when dealing with complex expressions that involve multiple operators. Remember, when in doubt, use parentheses to explicitly define the order of operations and avoid potential pitfalls.

Leave a Comment