# += -= /= *= >>= <<= &= |= %= (Assignment Operators)

## Purpose:

Operate and assign
the value of an expression.

## Syntax:

val1 *op=*
val2

val1 |
- |
A scalar, series, or table. |

val2 |
- |
A scalar, series, or table. |

## Returns:

A scalar, series, or table.

## Example:

j = 10;

j += 2;

Variable j
contains the value 12.

## Example:

W1: {1, 2, 3, 4}

W1 += 2

W1 contains the series {3, 4, 5, 6}. Each value of the series
is incremented by the value 2.0.

## Example:

a = {1, 2, 3, 4}

a &= 0x01

Variable a
contains the series {1, 0, 1, 0}
indicating the values that have the lowest bit set.

## Example:

b = {1, 2, 3, 4}

b |= 0x01

Variable b
contains the series {1, 3, 3, 5}.

## Example:

b = {1, 2, 3, 4}

b |^= 0x01

Variable b
contains the series {0, 3, 2, 5}.

## Remarks:

The following assignment operators are
supported:

Operator |
Description |

+= |
add then assign |

-= |
subtract then assign |

*= |
multiply then assign |

/= |
divide then assign |

%= |
modulo then assign |

>>= |
bit right shift then assign |

<<= |
bit left shift then assign |

&= |
bit and shift then assign |

|= |
bit or then assign |

|^= |
bit xor then assign |

@= |
append then assign |

@@ |
concatenate |

If e1
and e2 are expressions, then

e1
op= e2

is equivalent to

e1 =
(e1) op (e2)

except that e1
is computed only once. Notice the parenthesis.

x *= y + 1

is equivalent to

x = x * (y + 1)

not

x = x * y + 1

Assignment operators are not only fast
and concise, they correspond better to the way people think. We say "add
2 to j" or "increment j by 2," not "take j, add 2,
then put the result back into j." Thus, j
+= 2.

The statement:

is more compact and
equivalent to

The statement:

is equivalent to

The @= operator appends the series B to
the end of series A in place. a @= b
is much faster than a = a @@ b for
large series because @= operates
on the existing series whereas @@
creates and assigns a new series.

See DADiSP/VectorXL to optimize arithmetic
operations on series.

## See Also:

+
- * / ^

:=
(Hot Variable Assignment)

=
(Variable Assignment)

Bit
Operators

DADiSP/VectorXL

Logical
Operators