1) ["Kiki"]
2) { }
3) ["Kiki"]
"John" is not a key in the hash, so the default (an empty array) is returned. We then mutate the default value by adding "Kiki" to it.
We never set a value for "John" though, so this is not stored in the Hash (see the result of line 9).
Later, when we try to access some other non-present key ("Raul"), the default value is returned again. But since we mutated the value by shovelling "Kiki" in, this is no longer empty.