It's by the way called the Elvis operator. It does an implicit nullcheck on the lefthand and only assigns it when it is not null, else it will assign the righthand.
In pseudocode,
foo = bar ?: baz;
roughly resolves to
foo = (bar != null) ? bar : baz;
or
if (bar != null) {
foo = bar;
} else {
foo = baz;
}
You can also use this to do a "self-check" of foo as demonstrated in the code example you posted:
foo = foo ?: bar;
This will assign bar to foo when foo is null, else it will keep the foo "intact".