I think one of the easiest ways to understand what is going in the code is by understanding that backward slicing reverses the way you index your list (visually, it is like reversing your list) before getting sliced but the indexes of the elements in the list themselves do not change.
Thus when you have a list like this:
['jumbly', 'wumbly', 'number', 5]
0 1 2 3 #<-- index
by making it backward reading (adding -1 as the third indexer), you make it looks like this (because it is now indexing from the last to the first, instead of from the first to the last):
[5, 'number', 'wumbly', 'jumbly']
3 2 1 0 #<-- index
and then when you slice from the "beginning" to one (:1), you get everything from the "beginning" (now the "beginning" is 3) and stop when seeing 1:
[5, 'number', 'wumbly', 'jumbly']
3 2 1 0 #<-- index
^ ^ x
grab! grab! nope!
Thus you got your return:
[5, 'number']
The same principle applies when you backward slice with [:2:-1]:
[5, 'number', 'wumbly', 'jumbly']
3 2 1 0 #<-- index
^ x
grab! nope!
Thus you got your result:
[5]
Now, using that principle, you know what to put as the second indexer if you want to return what you want: zero! --> [:0:-1]:
[5, 'number', 'wumbly', 'jumbly']
3 2 1 0 #<-- index
^ ^ ^ x
grab! grab! grab! nope!
Then, you will get the result that you want:
[5, 'number', 'wumbly']