Some of these operators are dependent on the language of the author. See Global apps for more information.

Symbol Type Syntax Description
. Property Selector Slider1.Value
Extracts a property from a table, control, signal, or enumeration. For backwards compatibility, ! may also be used.
[or , depending on the language]
Decimal separator 1.23
[or 1,23 depending on the language]
Separator between whole and fractional parts of a number. The character is dependent on the language.
( ) Parentheses Filter(T, A < 10)

(1 + 2) * 3
Enforces precedence order, and groups sub-expressions in a larger expression
+ Arithmetic operators 1 + 2 Addition
-   2 - 1 Subtraction and sign
***   2 * 3 Multiplication
/   2 / 3 Division (also see the Mod function)
^   2 ^ 3 Exponentiation, equivalent to the Power function
%   20% Percentage (equivalent to "* 1/100")
= Comparison operators Price = 100 Equal to
>   Price > 100 Greater than
>=   Price >= 100 Greater than or equal to
<   Price < 100 Less than
<=   Price <= 100 Less than or equal to
<>   Price <> 100 Not equal to
& String concatenation operator "hello" & " " & "world" Makes multiple strings appear continuous
&& Logical operators Price < 100 && Slider1.Value = 20 Logical conjunction, equivalent to the And function
||   Price < 100 || Slider1.Value = 20 Logical disjunction , equivalent to the Or function
!   !(Price < 100) Logical negation, equivalent to the Not function
exactin Membership operators Gallery1.Selected exactin SavedItems Belonging to a collection or a table
exactin   "Windows" exactin “To display windows in the Windows operating system...” Substring test (case-sensitive)
in   Gallery1.Selected in SavedItems Belonging to a collection or a table
in   "The" in "The keyboard and the monitor..." Substring test (case-insensitive)
@ Disambiguation operator MyTable[@fieldname] Field disambiguation
@   [@MyVariable] Global disambiguation
[or ; depending on the language]
List separator If( X < 10, "Low", "Good" )
{ X: 12, Y: 32 }
[ 1, 2, 3 ]
[or If( X < 10; "Low"; "Good" )
{ FirstName: "Jane"; LastName: "Doe" }
[ 1; 2; 3 ]
Separates: . This characters is dependent on the language.
[or ;; depending on the language]
Formula chaining Collect(T, A); Navigate(S1, "")
[or Collect(T; A);; Navigate(S1; "")]
Separate invocations of functions in behavior properties. The chaining operator is dependent on the language.
Parent Parent operator Parent.Fill Access to properties of a control container
ThisItem ThisItem operator ThisItem.FirstName Access to fields of a Gallery or form control

in and exactin operators

You can use the in and exactin operators to find a string in a data source, such as a collection or an imported table. The in operator identifies matches regardless of case, and the exactin operator identifies matches only if they're capitalized the same way. Here's an example:

  1. Create or import a collection named Inventory, and show it in a gallery, as the first procedure in Show images and text in a gallery describes.

  2. Set the Items property of the gallery to this formula:
    Filter(Inventory, "E" in ProductName)

    The gallery shows all products except Callisto because the name of that product is the only one that doesn't contain the letter you specified.

  3. Change the Items property of the gallery to this formula:
    Filter(Inventory, "E" exactin ProductName)

    The gallery shows only Europa because only its name contains the letter that you specified in the case that you specified.

ThisItem operator

You can show data in Gallery, Edit form, or Display form controls by binding it to a table or a collection. These controls are a container for other cards and controls. Each card or control within the container can access the bound data through the ThisItem operator.

You use the ThisItem operator to specify the column of data that each card or control within the outer control. For example, that operator in the product gallery for Show images and text in a gallery specified that the image control showed the product design, the upper label showed the product name, and the lower label showed the number of units in stock.

For nested galleries, ThisItem refers to the innermost gallery's items. Assuming the row fields in the inner and outer galleries don't conflict, you can also use the unqualified field (column) names directly. This approach enables rules in an inner gallery to refer to an outer gallery's items.

Parent operator

Some controls host other controls. For example, Screen, Gallery, Card, Edit form, and Display form controls are all containers for controls. We call the hosting control the "parent" of the controls within.

Any control in PowerApps can be referenced by name from anywhere within the app. Screen1 may be the name of a screen in your app. To retrieve the background color of this screen, you can use Screen1.Fill.

Controls on this screen have another option. They can use a relative reference: Parent.Fill. The Parent operator refers to the control that hosts this control, making available all of its properties. Using Parent is helpful because it doesn't depend on the name of the control. You can copy and paste a container control without needing to adjust any references within the container. This operator also makes the relationship between child and parent controls clearer when reading formulas.

Disambiguation operator

Some functions create record scopes for accessing the fields of table while processing each record, such as Filter, AddColumns, and Sum. Field names added with the record scope override the same names from elsewhere in the app. When this happens, you can still access values from outside the record scope with the @ disambiguation operator:

  • To access values from nested record scopes, use the @ operator with the name of the table being operated upon using the pattern Table[@FieldName].
  • To access global values, such as data sources, collections, and context variables, use the pattern [@ObjectName] (without a table designation).

For more information and examples, see the discussion on record scopes.