Hey Liyamu,
Yeah, that first line should go in start, before any mention of axes. Twine has a bit of JavaScript at its core, and the bent brackets basically tell Twine "hey, $carrying is a container for other properties." When we say $carrying['axe'], we mean "Hey, remember that container, $carrying? Let's look inside that container for the axe." If we haven't first initialized (created) that container, then we can't look inside it.
Hope that explains everything! Let me know if you have other questions.