括弧を使った優先順位の変更

広告

一つの式の中に複数の演算子が含まれていた場合は演算子の優先順位と結合規則に従って演算されることは前のページでご説明しました。ここでは括弧()を使って演算子の優先順位に関わらず特定の演算を優先させたい場合の方法を確認します。

次の例を見てください。

var num;
num = 10 + 5 * 4;

優先順位に従えば「*」の方が「+」よりも優先順位が高いためまず「5 * 4」の演算が先に行われます。ここで「10 + 5」の方を先に演算させたい場合には括弧()を使って次のように記述します。

var num;
num = (10 + 5) * 4;

括弧で囲まれた中の演算は、優先順位に関係なく優先的に行われます。よって先に「10 + 5」が演算され、次に「15 * 4」が演算されることになります。

括弧の中に複数の演算子が含まれていた場合には、括弧の中だけで演算子の優先順位や結合規則を使って演算される順番が決まります。

var num;
num = (10 + 8 / 2) * 4;

上記の場合はまず括弧の中の「10 + 8 / 2」が演算されますが、この中には「+」と「/」の二つの演算子が含まれています。「+」と「/」では「/」の優先順位が高いので先に「8 / 2」が演算されます。

また括弧の中にさらに括弧を記述することもできます。

var num;
num = ((10 + 8) / 2) * 4;

括弧の中に括弧がある場合でも考え方は同じです。外側の括弧の中にある「(10 + 8) / 2」が先に演算されますが、この式にはさらに括弧が含まれているため括弧の中の「10 + 8」がまず最初に演算されます。

このように式の中の一部分を括弧でくくることで、優先的に演算を行わせることができるようになります。

サンプルコード

では簡単なサンプルで試してみます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>JavaScript テスト</title>
</head>
<body>

<script type="text/javascript" src="./js/script5_1.js">
</script>

</body>
</html>
var num1, num2, num3;

num1 = 10 + 8 / 2 * 4;
document.write("<p>10 + 8 / 2 * 4 = " + num1 + "</p>");

num2 = (10 + 8 / 2) * 4;
document.write("<p>(10 + 8 / 2) * 4 = " + num2 + "</p>");

num3 = ((10 + 8) / 2) * 4;
document.write("<p>((10 + 8) / 2) * 4 = " + num3 + "</p>");

上記を実際にブラウザ見てみると次のように表示されます。

p5-1

( Written by Tatsuo Ikura )