I always got confused as to what’s the end result my sort. I wasn’t sure if it would end up being ascending or descending.
The ultimate trick is to not think of **up** vs **down**. Instead think of increasing/decreasing from **left to right**.

We perceive arrays as *horizontal* beings. Hence *left and right* make more sense vs *up and down*

```
let nums = [1,4,2,3]
let sorted_nums = arr.sorted(by: {
$0 < $1 // left is smaller [1,2,3,4] i.e. ascending
})
```

If you see `$0 < $1`

then *left* side is smaller than the next item. i.e. it’s ascending.

```
let nums = [1,4,2,3]
let sorted_nums = arr.sorted(by: {
$0 > $1 // left is bigger [4,3,2,1] i.e. descending
})
```

If you see `$0 > $1`

then *right* side is smaller than the next item. i.e. it’s descending.
Similarly writing `array.sorted(by: <)`

is identical.

#### Alternate way:

`array.sorted(by: <)`

will make it decreasing.`array.sorted(by: >)`

will make it increasing.

#### And if I don’t pass a block?

It will make the array increasing. Increasing is more natural as that’s how we’d list numbers from 1…n and we almost never list numbers n…1.

```
let nums = [1,4,2,3]
print(nums.sorted()) // [1,2,3,4]
```

### $0 vs $1

Never place the `$1`

on the left side when sorting. `$0`

is the first number, `$1`

is the second number in the comparison. If you switch them then the order will get reversed.