It's not just bash. All posix-based shells should work in basically the same way. The
((..)) construct is only available in bash/ksh/zsh, however.
See here for much more on shell arithmetic:
arithmetic expressions
Edit:
Note that the shell is only smart enough to determine if a variable contains a numeral or not. For other operations you need to use the "$".
Code:
#build an entire expression from variables
$ a=4 b=+ c=3
$ echo $(( a b c ))
bash: +: syntax error: operand expected (error token is "+")
$ echo $(( a $b c ))
7
#add the total number of array entries to the number in the last entry
$ array=( 1 2 3 )
$ echo "$(( array[2] + ${#array[@]} ))"
6