! negates the expression:
iex> a = true
true
iex> !a
false
iex> a = 1
1
iex> !a
false
iex> a = nil
nil
iex> !a
true
!! negates the negated expression and so it turns a truthy value into a boolean:
iex> a = true
true
iex> !!a
true # Not very useful because we’ve ended up with the same value.
iex> a = 1
1
iex> !!a
true
iex> a = nil
nil
iex> !!a
false
Docs: http://elixir-lang.org/docs/stable/elixir/Kernel.html#!/1


















