By placing the tokenizer block #{} before the script your tricking the tokenizer to evaluate only whats in the block , which is empty.
This way the script the follows will be ignored by tokenizer , and will be evaluated correctly by c# compiler.
If the tokenizer block was not at the beginning before the actual script then the whole script will be evaluated by the tokenizer ,
so something like :

{
SetOutcome("Yes");
}

will be considered as a token and wont produce anything.

So basically we are separating what is to be tokenized and what needs to be evaluated by c# compiler.

Ok, thanks. But as explained in this
post the tokenizer searches first for #{..} tokens and if there is one found it presumes that the 'new' token format is used. So if I need more tokens in my script I have to write #{Content.Id} in my script - is that right so far?
The confusing thing nevertheless is, that the field in the Decision Activity has a token drop-down and this tokens are with {}. In this case it seems a little bit inconsistent.

But the other question for me is, why is this line in the decision activity (after the tokens getting parsed)?