Evaluating deeply nested properties can be tedious if you want your code to be safe from the dreaded NullReferenceException. Although sometimes considered a bad habit, occasionally you just have to dive into an object hierarchy to fish out that one value you're interested in.
In these cases, you must check every object in the hierarchy, usually falling back to a default value in case the value you're looking for isn't there. Even so, you often end up with null references in places you never thought to anticipate.
Using these simple extension methods can make it a lot easier (and prettier) to access deeply nested values. It also lets you set an explicit default value in case your expression fails.
A word of caution
Since the purpose of these functions is to provide a logical fallback value in case an expression cannot be evaluated, it can potentially mask an underlying bug in your code. Don't make your expressions too complicated, because when they fail, all you'll see is that pretty default value.
Use responsibly.