Inverted syntax with conditional expressions

In traditional syntax conditional expressions are usually shown before the action within a statement or code block:

 IF raining=true THEN needumbrella=true 
In inverted syntax, the action is listed before the conditional expression in the statement or code block:

 needumbrella=true IF raining=true 
Inverted syntax with assignment

In traditional syntax, assignments are usually expressed with the variable appearing before the expression:

 a = 6
In inverted syntax, the expression appears before the variable:

 6 = a
Task

The task is to demonstrate support for inverted syntax forms within the language by showing both the traditional and inverted forms.

infix operator ~= {}
infix operator ! {}
 
func ~=(lhs:Int, inout rhs:Int) {
    rhs = lhs
}
 
func !(lhs:(() -> Void), rhs:Bool) {
    if (rhs) {
        lhs()
    }
}
 
// Traditional assignment
var a = 0
 
// Inverted using a custom operator
20 ~= a
 
let raining = true
let tornado = true
var needUmbrella = false
var stayInside = false
 
// Traditional conditional expression
if raining {needUmbrella = true}
 
// Inverted using a custom operator
_ = {stayInside = true} ! tornado