Skip to main content Link Search Menu Expand Document (external link)

Binding Operators Reference

Operators for building expressions in Scryber data binding.


Overview

Binding operators allow you to perform calculations, comparisons, and logical operations within binding expressions. All operators follow standard precedence rules and can be combined in complex expressions.


Arithmetic Operators

Perform mathematical calculations on numeric values.

Operator Description Precedence Example
+ Addition 5 {{model.price + model.tax}}
- Subtraction 5 {{model.total - model.discount}}
* Multiplication 4 {{model.quantity * model.price}}
/ Division 4 {{model.total / model.count}}
% Modulus (remainder) 4 {{model.index % 2}}
[^](./power) Exponentiation 3 {{model.base ^ model.exponent}}

Comparison Operators

Compare values and return boolean results. Used primarily in {{#if}} conditionals.

Operator Description Precedence Example
== Equality 7 {{#if model.status == 'active'}}
!= Inequality 7 {{#if model.count != 0}}
< Less than 6 {{#if model.age < 18}}
<= Less than or equal 6 {{#if model.score <= 100}}
> Greater than 6 {{#if model.value > 0}}
>= Greater than or equal 6 {{#if model.age >= 18}}

Logical Operators

Combine boolean expressions.

Operator Description Precedence Example
&& Logical AND 9 {{#if model.age >= 18 && model.hasLicense}}
|| Logical OR 10 {{#if model.isAdmin \|\| model.isModerator}}

Null Coalescing Operator

Handle null or undefined values with fallback.

Operator Description Precedence Example
?? Null coalescing 8 {{model.name ?? 'Unknown'}}

Operator Precedence

Operators are evaluated in order of precedence (1 = highest, 10 = lowest):

  1. Parentheses ()
  2. Member access .
  3. Exponentiation ^
  4. Multiplication, Division, Modulus *, /, %
  5. Addition, Subtraction +, -
  6. Comparison <, <=, >, >=
  7. Equality ==, !=
  8. Null coalescing ??
  9. Logical AND &&
  10. Logical OR ||

Use parentheses to override precedence:



Common Patterns

Complex Arithmetic

<p>Subtotal: $</p>
<p>Tax: $</p>
<p>Total: $</p>

Multiple Comparisons


  <span class="teen">Teenager</span>

Null Safety


<h2>{{model.user.name ?? 'Guest User'}}</h2>
<p>{{model.description ?? 'No description available'}}</p>

Conditional Classes


<div class="item {{#if model.stock > 0}}in-stock{{else}}out-of-stock{{/if}}">
  <p>Price: ${{model.price}}</p>
  {{#if model.discount > 0}}
    <p class="sale">Save: ${{model.price * model.discount}}</p>
  {{/if}}
</div>


See Also